powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi+ADO
27 сообщений из 27, показаны все 2 страниц
Delphi+ADO
    #32102854
Eugeni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня хранимая процедура возвращает несколько Recordset.
Перемещаться по ним я знаю как .NextRecordset()
Вопрос: А как при перемещении по ним мне узнать, что этот RecordSet последний?
...
Рейтинг: 0 / 0
Delphi+ADO
    #32103310
Фотография shane54
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну наверно в цикле типа

while NOT ADOQuery.EOF do begin
... чо то там делаешь;
ADOQuery.NextRecordSet; end;
...
Рейтинг: 0 / 0
Delphi+ADO
    #32103619
Eugeni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это все понятно.
while NOT ADOQuery.EOF do begin
... чо то там делаешь;
ADOQuery.NextRecordSet;-А если следующего recordset не существует, то будет ошибка.
Вообще я так и сделал только
try
ADOQuery.NextRecordSet
except
end;
Но хотелось бы без try. Как узнать существует RecordSet или нет? Всю башку сломал.
...
Рейтинг: 0 / 0
Delphi+ADO
    #32105426
senyag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется, что вам надо последовать совету shane54. Когда отлавливаешь EOF в цикле, то насколько я понимаю, исключение не выбрасывается. Вы, на данный момент, просто пишете Next, не проверяя EOF - и, понятное дело, получаете исключение. По крайней мере я кучу раз так делал, и всё было нормально.
...
Рейтинг: 0 / 0
Delphi+ADO
    #32105479
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 shane54, senyag
С каких пор EOF свидетельствует о том, что нет следующего рекордсета?

2 Eugeni
А NextRecordSet разве не возвращает _Recordset ? Может, получится проверить на nil?
...
Рейтинг: 0 / 0
Delphi+ADO
    #32105483
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В MSDN-е, по крайне мере, написано так:
When there are no more results, recordset will be set to Nothing.
...
Рейтинг: 0 / 0
Delphi+ADO
    #32105496
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а просто NEXT чем отличается?
...
Рейтинг: 0 / 0
Delphi+ADO
    #32105497
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отличается от чего?

Если от NextRecordSet, то Next - возвращает следующую запись в текущем RecordSet-е, а NextRecordSet - следующий объект RecordSet (с другим набором данных).
...
Рейтинг: 0 / 0
Delphi+ADO
    #32105500
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спрошу попутно
while not adoquery1.eof do
begin
....
adoquery1.next;
end;
выдает ошибку
как надо?
...
Рейтинг: 0 / 0
Delphi+ADO
    #32105519
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все правильно, так и надо. Ошибки быть не должно. (Если adoquery1 не закрыто или не nil )
...
Рейтинг: 0 / 0
Delphi+ADO
    #32105529
Фотография Natalka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а ведь есть!
list index out
...
Рейтинг: 0 / 0
Delphi+ADO
    #32105537
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не смог добится этой ошибки. Можно исходник посмотреть?
...
Рейтинг: 0 / 0
Delphi+ADO
    #32105549
Фотография Natalka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
count:=ADOQuery1.recordCount;
Form_data.StringGrid1.RowCount:=count;
for i:=1 to count do
begin
for j:=1 to myconst do form_data.stringgrid1.cells[j-1,i-1]:=ADOQuery1.Fields[j-].Asstring;
if count<> i then ADOQuery1.next;
end;
вот этот бред работает
while not ADOQuery1.eof do
begin
for j:=1 to myconst do form_data.stringgrid1.cells[j-1,i-1]:=ADOQuery1.Fields[j-].Asstring;
ADOQuery1.next;
end;
а здесь ошибка
...
Рейтинг: 0 / 0
Delphi+ADO
    #32105556
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
while not ADOQuery1.eof do 
begin 
for j:= [b]1  to myconst do form_data.stringgrid1.cells[j- 1 ,i- 1 ]:=ADOQuery1.Fields[j-].Asstring; 
ADOQuery1.next; 
end; [/b]

А как здесь i считается?
...
Рейтинг: 0 / 0
Delphi+ADO
    #32105564
Фотография Natalka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыла дописать
inc(i) в цикле
но ошибка не в этом
...
Рейтинг: 0 / 0
Delphi+ADO
    #32105569
Фотография Jozo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На сколько я помню в цыкле For никаких Inc(i), т.к. цикл сам увеличивает начальную точку на 1 и потом если писпать for i:=1 to recordcount
то первая запись выборки выпадет из цыкла
...
Рейтинг: 0 / 0
Delphi+ADO
    #32105570
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже, что ошибка при расчете i или j. ListIndexOutOfBound - это же ошибка из коллекций, может быть Fields или Cells?
...
Рейтинг: 0 / 0
Delphi+ADO
    #32105571
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Jozo
Inc(i) - Это про второй кусок кода
...
Рейтинг: 0 / 0
Delphi+ADO
    #32105573
Фотография Natalka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы меня совсем запутали
напишите, плз, как из адоквейри записать в стринггрид правильно
Jozo, я там где-то 1 потеряла (j-)
...
Рейтинг: 0 / 0
Delphi+ADO
    #32105593
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
form_data.stringgrid1.RowCount := ADOQuery1.RecordCount;
i :=  0 ;
ADOQuery1.First;
while not ADOQuery1.eof do 
begin 
  for j :=  1  to ADOQuery1.Fields.Count -  1  do 
    form_data.stringgrid1.cells[j -  1 , i] := ADOQuery1.Fields[j -  1 ].AsString; 
  ADOQuery1.Next; 
  Inc(i);
end;
...
Рейтинг: 0 / 0
Delphi+ADO
    #32105594
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон

for j := 0 to ADOQuery1.Fields.Count - 1 do
...
Рейтинг: 0 / 0
Delphi+ADO
    #32105596
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
form_data.stringgrid1.RowCount := ADOQuery1.RecordCount;
i :=  0 ;
ADOQuery1.First;
while not ADOQuery1.eof do 
begin 
  for j :=  0  to ADOQuery1.Fields.Count -  1  do 
    form_data.stringgrid1.cells[j, i] := ADOQuery1.Fields[j].AsString; 
  ADOQuery1.Next; 
  Inc(i);
end;
...
Рейтинг: 0 / 0
Delphi+ADO
    #32105597
senyag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу первого вопроса Eugeni: в борландовском хелпе (DevGuide: Developing database applications - Fetching multiple result sets) написано нижеследующее:

The first time you call NextRecordSet, it returns the second set of records. Calling NextRecordSet again returns a third dataset, and so on, until there are no more sets of records. When there are no additional cursors, NextRecordSet returns nil.

То есть всего то надо проверить на нил, как Артём1 и советует.

2 Артем1: насчет ЕОФ - это была лажа... Сорри... :)

2 Natalka: ошибка точно не с запросом, вещи типа

while not adoquery1.eof do
begin
....
adoquery1.next;
end;

все многократно использовали в своей работе, и всё работает (только вчера писал такого типа код)
...
Рейтинг: 0 / 0
Delphi+ADO
    #32105599
Фотография Natalka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще то у меня тоже самое
но не работает
eoleexception
...
Рейтинг: 0 / 0
Delphi+ADO
    #32105601
senyag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Natalka: а вы дбгрид по какой-то причине не хотите использовать, или просто пострадать за правду охота?
...
Рейтинг: 0 / 0
Delphi+ADO
    #32105611
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какое значение свойства CursorLocation?
...
Рейтинг: 0 / 0
Delphi+ADO
    #32105613
Фотография Natalka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да...
пожалуй.. пойду, отдохну...
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi+ADO
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]