Форум по программированию Delphi Sources

 


   Сайт  
   Исходники  
   Компоненты  
   Статьи  
   FAQ  
   Поиск по исходникам  
   Футболки  

Вернуться   Форум по программированию Delphi Sources > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.04.2017, 22:56
SetiX SetiX вне форума
Прохожий
 
Регистрация: 18.04.2017
Сообщения: 1
Версия Delphi: Delphi XE3
Репутация: 10
По умолчанию Работа с БД

в общем не пойму разницы работы кода. Есть БД на 4 записи (2 столбца). Цель перебрать эти записи и доставь значение одной из них
Код:
while not form2.ADOQuery7.Eof do
         begin
         if form2.DBLookupComboBox4.Text = form2.ADOQuery7.FieldByName('NM').AsString then
         tm:= form2.ADOQuery7.FieldByName('ENDDATE').AsString;
         form2.ADOQuery7.Next;
         end;
 
tims:=StrToDateTime(tm);
 
form2.ADOQuery7.Prior; 
form2.ADOQuery7.Prior; 
form2.ADOQuery7.Prior;
Вот по выше указанному коду достается все норм но это при 4 записях.
если изменить form2.ADOQuery7.Prior; на form2.ADOQuery7.First; программа 1 раз показывает все нормально а дальше вылетает при повторном нажатии. Не могу понять в чем причина
Код:
while not form2.ADOQuery7.Eof do
         begin
         if form2.DBLookupComboBox4.Text = form2.ADOQuery7.FieldByName('NM').AsString then
         tm:= form2.ADOQuery7.FieldByName('ENDDATE').AsString;
         form2.ADOQuery7.Next;
         end;
 
tims:=StrToDateTime(tm);
 
form2.ADOQuery7.First;
Вроде в 1 случае просто возвращаюсь к 1 записи посредством перехода вверх на 1 запись по 2 случае сразу выбираю 1 запись. Но в 1 работает все норм а во 2 глючит. КТо может пояснить что делаю не так

Последний раз редактировалось lmikle, 19.04.2017 в 05:18.
Ответить с цитированием
  #2  
Старый 19.04.2017, 12:50
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 2,708
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Наверное в данной ситуации больше подходит вызов метода Locate или Lookup, но если как представленно, то First следует до вхождения в цикл применять ибо не известно, где в этот момент находится курсор, а так получается что в первый раз пробежка до конца происходит и на последней записи останавливается, а вторая так с неё и начинается, да и DisableControls тоже нужно до вали вызвать, а после EnableControls, тогда может и вылета больше не будет
Ответить с цитированием
Ответ



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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:36.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources", 2004-2017

ВКонтакте   Facebook   Twitter