|
#1
|
|||
|
|||
Работа с БД
в общем не пойму разницы работы кода. Есть БД на 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; если изменить 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; Последний раз редактировалось lmikle, 19.04.2017 в 05:18. |
#2
|
||||
|
||||
Наверное в данной ситуации больше подходит вызов метода Locate или Lookup, но если как представленно, то First следует до вхождения в цикл применять ибо не известно, где в этот момент находится курсор, а так получается что в первый раз пробежка до конца происходит и на последней записи останавливается, а вторая так с неё и начинается, да и DisableControls тоже нужно до вали вызвать, а после EnableControls, тогда может и вылета больше не будет
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |