Eugeni
Дата: 07.02.2003 11:14:58
У меня хранимая процедура возвращает несколько Recordset.
Перемещаться по ним я знаю как .NextRecordset()
Вопрос: А как при перемещении по ним мне узнать, что этот RecordSet последний?
shane54
Дата: 07.02.2003 23:25:13
Ну наверно в цикле типа
while NOT ADOQuery.EOF do begin
... чо то там делаешь;
ADOQuery.NextRecordSet; end;
Eugeni
Дата: 10.02.2003 07:52:50
Это все понятно.
while NOT ADOQuery.EOF do begin
... чо то там делаешь;
ADOQuery.NextRecordSet;-А если следующего recordset не существует, то будет ошибка.
Вообще я так и сделал только
try
ADOQuery.NextRecordSet
except
end;
Но хотелось бы без try. Как узнать существует RecordSet или нет? Всю башку сломал.
senyag
Дата: 12.02.2003 22:15:51
Мне кажется, что вам надо последовать совету shane54. Когда отлавливаешь EOF в цикле, то насколько я понимаю, исключение не выбрасывается. Вы, на данный момент, просто пишете Next, не проверяя EOF - и, понятное дело, получаете исключение. По крайней мере я кучу раз так делал, и всё было нормально.
Артем1
Дата: 13.02.2003 07:34:40
2 shane54, senyag
С каких пор EOF свидетельствует о том, что нет следующего рекордсета?
2 Eugeni
А NextRecordSet разве не возвращает _Recordset ? Может, получится проверить на nil?
Артем1
Дата: 13.02.2003 07:51:30
В MSDN-е, по крайне мере, написано так:
When there are no more results, recordset will be set to Nothing.
NNN
Дата: 13.02.2003 08:30:27
а просто NEXT чем отличается?
Артем1
Дата: 13.02.2003 08:38:55
Отличается от чего?
Если от NextRecordSet, то Next - возвращает следующую запись в текущем RecordSet-е, а NextRecordSet - следующий объект RecordSet (с другим набором данных).
NNN
Дата: 13.02.2003 08:50:21
спрошу попутно
while not adoquery1.eof do
begin
....
adoquery1.next;
end;
выдает ошибку
как надо?
Артем1
Дата: 13.02.2003 09:23:07
Все правильно, так и надо. Ошибки быть не должно. (Если adoquery1 не закрыто или не nil
)