Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.17;
Скачать: CL | DM;

Вниз

FireBird TIBQuery SELECT   Найти похожие ветки 

 
DenKop ©   (2003-03-28 18:22) [0]

Вот такой интересный вопрос: имею TIBQuery

SQL[0] = SELECT * FROM TREE1 WHERE ID_PAR=0

TIBQuery.Open

Получаю RecordCount=1, а на самом деле записей 3.
Потом делаю TDataSource и связываю его с TIBQuery,
делаю DBGrid и связываю с TDataSource.

SQL[0] = SELECT * FROM TREE1 WHERE ID_PAR=0

TIBQuery.Open

Получаю RecordCount=3, что и хотелось получить, т.е. записи
выбираются только тогда, когда они отрабражаются в гриде?...
И ещё одна интересная вещь: в DesignTime настраиваю размер
грида под отображение без прокрутки ровно 2-х записей.
Выполняю свой запрос и получаю RecordCount=2, т.е. кол-во
записей равно кол-ву показываемых строк в гриде. Елси грида
нет, то Query выбирает стабильно одну, первую совпавшую запись.
Юзаю Firebird-1.0.2.908-Win32 с вин ХР.
Может кто сталкивался с такой вот геморойной вещью. Хотябы где
копать FIB, IDE, DUMP. Уже дня два парюсь с этим дерьмом.
И ещё когда этот запрос выполняю в консоли, всё проходит
замечательно, поэтому ищу концы в IDE, хотя может я и не прав.

Навсякий, DUMP таблички:

SET SQL DIALECT 3;
CREATE TABLE TREE1 (
ID INTEGER NOT NULL,
ID_PAR INTEGER NOT NULL,
TEXT VARCHAR(50) CHARACTER SET WIN1251 NOT NULL
);
ALTER TABLE TREE1 ADD CONSTRAINT FK_TREE1 PRIMARY KEY (ID, ID_PAR, TEXT);


 
Mike Kouzmine   (2003-03-28 18:30) [1]

Может надо встать на поледнюю запись и только после этого смотреть RecordCount


 
zacho ©   (2003-03-28 20:55) [2]

В хелпе же все написано ! В RecordCount содержится кол-во зафетченных записей. Т.ч. если хочешь узнатькол-во всех записей, возвращаемых запросом - перед обращением к RecordCount вызови FetchAll


 
MsGuns ©   (2003-03-28 21:20) [3]

Не верь глазам своим ! Лично я или делаю Last-First или отдельно параллетьный запрос с Select COUNT(*)


 
zacho ©   (2003-03-28 21:45) [4]


> MsGuns © (28.03.03 21:20)

Вместо Last-First проще использовать FetchAll :-)
А запрос с SELECT COUNT, действительно, в подавляющем большинстве случаев - оптимальнее.


 
DenKop ©   (2003-03-28 23:45) [5]

А чё это значит SELECT COUNT, выбрать колличество?
И что делает FetchAll


 
MsGuns ©   (2003-03-29 01:03) [6]

>DenKop © (28.03.03 23:45)

Она как бы подкачивает "все", что должно быть возвращеною Но "как бы" не всегда все...


 
DenKop ©   (2003-03-29 01:19) [7]


> Но "как бы" не всегда все...


А когда это бывает?


 
MsGuns ©   (2003-03-29 01:30) [8]

Почитай внимательно все, что написано в хэлпе. В частности, если сервер не занят (типа локалки), то возвращает все сразу, если сервер занят обработкой других запросов, то вернуть он может только часть записей, оставляя "на потом" остаток. Оставшиеся будут "подкачены (fetched) автоматически по мере обращения к ним приложения (смещение курсора к внеграничной метке НД в буфере)


 
zacho ©   (2003-03-29 05:31) [9]


> MsGuns © (29.03.03 01:30)
> Почитай внимательно все, что написано в хэлпе. В частности,
> если сервер не занят (типа локалки), то возвращает все сразу,
> если сервер занят обработкой других запросов, то вернуть
> он может только часть записей, оставляя "на потом" остаток.

Неправильно. Занатость/незанятостьтут вообще не причем. FetchAll всегда закачивает все записи resultset"а

> DenKop © (28.03.03 23:45)

Почитай хелп по IBX (про FetchAll) и Language Reference про SELECT. Это будет и быстрее, и полезнее чем ждать ответов здесь



Страницы: 1 вся ветка

Текущий архив: 2003.04.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
1-54702
sashak
2003-04-04 12:30
2003.04.17
Проблема с запуском DataBase DeskTop


1-54656
Демонов Е.В.
2003-04-08 16:04
2003.04.17
Вопрос по синтаксису


1-54649
Btymahe
2003-04-04 12:59
2003.04.17
Копирование объектов


8-54769
007
2003-01-15 16:51
2003.04.17
проигрывание звука в приложении


1-54590
jel
2003-04-07 10:32
2003.04.17
Ожидание завершения порожденного процесса