RecCount в IBQuery

Вопросы стыковки визуальных компонент (DataControls, EhGrid, VirtualTreeView, DevExpress и т.п.) с данными из БД.

Модераторы: kdv, CyberMax

Ответить
andycat
Сообщения: 65
Зарегистрирован: 22 фев 2005, 12:06

RecCount в IBQuery

Сообщение andycat » 30 мар 2011, 10:28

Добрый день!
Сервер FB 2.1.3.18185 Win2003
Клиентская программа на winXP SP3
Delphi 7 компоненты IBX
форма документа, в ней DBGrid куда данные из IBQuery идут
есть кусок кода:

Код: Выделить всё

 ExcelWorkSheet1.Range['B11'].Value:=inttostr(IBQuery1.RecordCount)+
  ' ('+KolToStrin(inttostr(IBQuery1.RecordCount))+')'+' шт. номинальной стоимостью 1 (один) руб.';
соотвественно по кнопочке весь список данных выходит в Excel отчет
количество записей в шапке отчета получаю IBQuery1.RecordCount
Я знаю что это не правильно :) , но приложение однопользовательское и этот кусок я конечно потом перепишу правильно через select count(id)
Сейчас имеется глюк в котором хочеться разобраться:
при нажатии кнопки отчета и соотвественно открытом наборе данных RecordCount дает 9 записей, хотя их 15
после закрытия получившегося Excel Отчета, опять нажимаю кнопку отчета (не перечитывая и не меняя данные) и уже выдает правильные 15 записей.
Если например в открывшейся форме документы снаяала перейти ручками на последнюю запись, то при выводе отчета он покажет правильные 15 записей.

вот и непонятно - это компоненты IBX глючат или что?

P.S. добавив перед началом формирования отчета пустой цикл:

Код: Выделить всё

 while not IBQuery1.Eof do IBQuery1.Next;
проблема исчезла...... но вопрос остался

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: RecCount в IBQuery

Сообщение kdv » 30 мар 2011, 11:32

количество записей в шапке отчета получаю IBQuery1.RecordCount
Я знаю что это не правильно :) , но приложение однопользовательское и этот кусок я конечно потом перепишу правильно через select count(id)
страсти какие. зачем count-то? Если вы выводите количество полученных записей, то никакой "многопользовательности" тут нет, сервер вам отдал N записей, а другому N+M или N-M, какая разница? Сколько получили, столько и вывели.
проблема исчезла...... но вопрос остался
ДО захода на форум нужно всегда смотреть статьи на сайте.
http://www.ibase.ru/devinfo/ibx.htm
раздел "Буферизация"

p.s. в таких случаях есть волшебный метод FetchAll.

andycat
Сообщения: 65
Зарегистрирован: 22 фев 2005, 12:06

Re: RecCount в IBQuery

Сообщение andycat » 30 мар 2011, 17:50

спасибо, прочитал статью еще раз внимательнее - помогло :)

Ответить