![]() |
|
![]() ![]() ![]() |
|
fantomba |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 2.3.2009 Где: Rostov-on-Don Репутация: нет Всего: нет |
Проблема: использую компоненты IB для FB1.5.5.4926. Вызываю из основной программы DLL, передаю в нее переменную по которой искать записи. Добовляю переменную к запросу. Все проходит нормально. Но выводит только одну запись... хотя их 4 и больше. Если все это прделать к событию по ножатию кнопки на форме библиотеки, то выводит все записи... Может что упустил в особенностях работы IBQuery...
|
|||
|
||||
vovk |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 28.2.2008 Репутация: 6 Всего: 6 |
если читать записи в цикле, то лучше поступать так
While not TDataset.Eof do В датасет после запроса не все записи подгружаются, вот если поставить грид на форму и связять с IBQuery1, то в датасет будет содержатся столько записей, сколько влазит в гирд для одновременного отображения, а по мере прокрутки будут запрашиватся новые, у вас скорее всего IBQuery1 не связан с визуальными компонентами, поэтому и запись только 1. |
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
fantomba |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 2.3.2009 Где: Rostov-on-Don Репутация: нет Всего: нет |
vovk, огромное спасибо!
DBGrid и другие компоненты отображения не используются. Инструкция while not... помогла! Все работает! Тема закрыта. |
|||
|
||||
Akella |
|
||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
а если записей 1000-10000.... ![]() Добавлено @ 22:28 Может лучше количество записей определять отдельным запросом?
Может у компоненты есть что-то вроде метода RecordCountFromServer? Например, у компонентов FibPlus есть метод RecordCountFromSrv
которая возвращает не количество отфетченных записей, а реальное количество записей... Это сообщение отредактировал(а) Akella - 9.5.2010, 22:28 |
||||
|
|||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
Тогда плохи дела. Но в условии не было никаких "если". ![]() -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
fantomba |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 2.3.2009 Где: Rostov-on-Don Репутация: нет Всего: нет |
||||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Ну в этой таблице 20, а через месяц в другой будет миллион... и ты опять применишь этот код, который тебе посоветовали, в итоге... Лучше сразу использовать правильный код.
|
|||
|
||||
vovk |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 28.2.2008 Репутация: 6 Всего: 6 |
чтото мне подсказывает, что FetchAll тут ничем ни лучше будет при большом количестве записей.. вот
это да согласен, определить сколько и если много то потом выдавать данные к примеру блоками по 50- 100 записей, но это уже условия. Может у человека данных физически не может много быть Это сообщение отредактировал(а) vovk - 11.5.2010, 17:08 |
||||
|
|||||
Deniz |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 8 Всего: 44 |
Хотя тема закрыта, вставлю свои 5 копеек.
Для циклаFetchAll не нужен, все равно все записи прочитаются (breake не в счет). Обычно FetchAll нужен для "бегунка" (ProgressBar и т.д.), что бы показать пользователю что процесс не висит. Можно и запросом select count(*) узнать сколько записей но, есть свои ограничения: 1. Доп. запрос это доп. время. 2. Есть ситуации, при которых доп. запрос сформировать крайне сложно. 3. Уровень изоляции транзакции. Если между доп. и основным запросом добавится/удалится запись, то результаты по кол-ву записей могут быть разные. PS: Если планируется забрать все записи из запроса, то FetchAll (для определения кол-ва записей) выигрывает у select count(*), ИМХО. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |