Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2007, 18:47   #1
doncova1
Пользователь
 
Регистрация: 19.11.2006
Сообщений: 42
Смех чем может быть вызвана ошибка при использовании AdoQuery1.FindNext

чем может быть вызвана ошибка "Either BOF or EOF is true, or the current record has been deleted. Requested operation requires a current record" при выполнении кода
if i=1 then begin
s:=#39;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('SELECT * from Clienti where FIO='+s+Edit1.text+s );
adoquery1.Active:=true;


if AdoQuery1.RecordCount>0 then
begin
if i=1 then AdoQuery1.FindFirst;
i:=0;
i:=AdoQuery1.FieldValues['Count'];
while AdoQuery1.FindNext do
i:= i+AdoQuery1.FieldValues['Count'];

end;

Последний раз редактировалось doncova1; 28.02.2007 в 20:28.
doncova1 вне форума Ответить с цитированием
Старый 01.03.2007, 05:19   #2
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

Переменная s типа char, насколько я понимаю, а 39 символ по ASCII, насколько мне не изменяет память, не имеет прописного значения - наверняка именно здесь и есть ошибка.
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума Ответить с цитированием
Старый 01.03.2007, 09:21   #3
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Requested operation requires a current record
Ошибка работы с базой данных.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 01.03.2007, 09:27   #4
doncova1
Пользователь
 
Регистрация: 19.11.2006
Сообщений: 42
По умолчанию

вообще s это строка, а 39 это ковычка , но часть кода
if i=1 then begin
s:=#39;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('SELECT * from Clienti where FIO='+s+Edit1.text+s );
adoquery1.Active:=true;


прекрасно работает без остального текста
doncova1 вне форума Ответить с цитированием
Старый 01.03.2007, 09:51   #5
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Смотрите выше. ошибка работы с базой данных.
ошибку , что логично, вызывает часть кода

:=AdoQuery1.FieldValues['Count'];
while AdoQuery1.FindNext do
i:= i+AdoQuery1.FieldValues['Count'];
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 01.03.2007, 11:15   #6
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

Цитата:
Сообщение от doncova1 Посмотреть сообщение
вообще s это строка, а 39 это ковычка
Тогда к чему примудрости? Как я понимаю, значение строковому параметру присваивается только из-за ковычки!!? И все это ради вот такого куска кода:
Код:
adoquery1.SQL.Add('SELECT * from Clienti where FIO='+s+Edit1.text+s );
Возможно я что-то не понимаю, но по-моему так будет немного оптимальнее:
Код:
adoquery1.SQL.Add('SELECT * from Clienti where FIO='''+Edit1.text+'''');
Причем строку можно и не объявлять...
Цитата:
Сообщение от doncova1 Посмотреть сообщение
...а 39 это ковычка , но часть кода
...
прекрасно работает без остального текста
Прошу прощения великодушно - код не проверял ибо писал с телефона, а компьютера с Delphi под рукой не оказалось. Действительно 39 это ковычка, просто глубоко в памяти (еще с паскаля) засели цифры 37, 38, 39, 40 - коды стрелочек на клавиатуре, а то, что у них символы есть, я как-то вдруг позабыл.

И все-таки к делу... Между запросом и подсчетом суммы есть еще какой-нибудь код? По ошибке понятно, что процедура обращается к несуществующей записи: на каком шаге она возникает?
Познавая других, мы познаем себя.
С'est la vie...

Последний раз редактировалось SuperVisor; 01.03.2007 в 11:37.
SuperVisor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Память не может быть "read" Alewteena Безопасность, Шифрование 3 27.08.2008 05:16
Из какой ячейки вызвана функция? ALink Microsoft Office Excel 7 13.05.2008 00:59
Как быть? Mitron Свободное общение 8 11.03.2008 20:01
Материнка не видит винт PATA, в чем может быть глюк? Stilet Компьютерное железо 4 09.01.2008 10:12