Форум: "Базы";
Текущий архив: 2003.04.17;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c