RecordCount в Interbase
Запросы соответственно через IBQuery.
Свойство Query->RecordCount всегда равно либо 0 (если записей нет вообще), либо 1 (если есть хотя бы одна запись), хотя по идее должно выдавать общее число записей.
Вопрос: 1) почему это так происходит?
2) как узнать число записей, возвращаемых запросом (желательно без доп.запроса в виде count(*) )
Пишу в C++ Builder 5, Firebird 1.5.
Запросы соответственно через IBQuery.
Свойство Query->RecordCount всегда равно либо 0 (если записей нет вообще), либо 1 (если есть хотя бы одна запись), хотя по идее должно выдавать общее число записей.
Вопрос: 1) почему это так происходит?
2) как узнать число записей, возвращаемых запросом (желательно без доп.запроса в виде count(*) )
Где-то я уже такое слышал. Только у человека у таблицы РекордКаунт не возвращался. Он заметил зависимость, как ни странно, от ДБгрида - сколько записей в гриде отражено, столько и РК дает. Заметил также, что если грид на последнюю запись прокрутить, то РК возвращает правильное значение. Но как он в конце концов обошел этот глюк, я, к сожалению, не помню..
Но как он в конце концов обошел этот глюк, я, к сожалению, не помню..
Чудики, блин. Доку курить надо! Для этого есть FetchAll();
Только в данном случае пользоваться IBTable - моветон. Пересмотрите решение задачи.
Чудики, блин. Доку курить надо! Для этого есть FetchAll();
Только в данном случае пользоваться IBTable - моветон. Пересмотрите решение задачи. [/B
конечно глупо задавать этот вопрос здесь, но учится никогда не поздно :))
что такое моветон?
Чудики, блин. Доку курить надо! Для этого есть FetchAll();
Только в данном случае пользоваться IBTable - моветон. Пересмотрите решение задачи.
Freeman
а в каких случаях пользуются IBTable...
заметила что я им вообще не плозуюсь...P(
а в каких случаях пользуются IBTable...
заметила что я им вообще не плозуюсь...P(
Значит, пишешь правильно. Сильную необходимость использования таблиц обычно испытывают программисты, перешедшие в SQL из настольных баз данных и еще не забывшие плохие привычки.
что такое моветон?
Что-то идущее вразрез с неписанными правилами культурного поведения. Например, плевки на пол или скабрезные анекдоты в приличном обеществе не приветствуются.
Значит нужно поместить в AfterOpen вызов метода FetchAll? если я правильно понял? Если да - каковы накладные расходы, если у меня запрос выдает миллионы строк?
Если да - каковы накладные расходы, если у меня запрос выдает миллионы строк?
Накладные расходы, разумеется, высоки. Поэтому, более цивилизованным способом является получение count(*) в том или ином виде.
Вообще, в серверах выборка count(*) для большого запроса не является чем-то из ряда вон выходящим. Например, в компонентах на DAC-движке это реализовано самими компонентами, достаточно установить соответствующий флаг.