Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-54474
nv-vetal
2003-03-29 20:13
2003.04.17
ADO. MS Access. Удаление записи - получение ошибки.


14-54790
Danilka
2003-03-31 11:26
2003.04.17
А где именинники?


11-54537
SPeller
2002-06-29 11:42
2003.04.17
Отлов сообщений форме


1-54589
asafr
2003-04-04 16:35
2003.04.17
DLL and private/public (Вопрос большой)


3-54397
Roman_kv
2003-03-28 14:50
2003.04.17
Operation not apicatible из за чего это может быть?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский