Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

InterBase SQL. Узнать количество записей. [D2005, XP]


Философ Огня ©   (2006-12-22 08:23:00) 

Есть код

 with DataModule1 do begin
   ibTransaction.StartTransaction;
   ibSQL1.GoToFirstRecordOnExecute := True;
   ibSQL1.SQL.Clear;
   ibSQL1.SQL.Text := 'SELECT * FROM CALLS WHERE '+ SQL + ' ORDER BY "DATE"';
   ibSQL1.ExecQuery;
   Result := ibSQl1.RecordCount;
{    while not ibSQL1.Eof do with ibSQL1 do begin
     Application.ProcessMessages;
     Inc(Result);
     Next;
   end;}

   
   ibTransaction.Commit;
   ibSQL1.Close;
 end;


таквыделено то, как я пытался сделать. тупо - записей больше 100000.
так получается ерунда, в справке написано, что надо пройтись по всем записям, чтобы это число стало правильным.а это значит - вернуться к тому же.
Пожалуйста, подскажите, как?


Anatoly Podgoretsky   (2006-12-22 11:48:00) [1]

> Философ Огня  (22.12.2006 8:23:00)  [0]

Ерунда из-за того, что тупо 100 000 записей.
А они нужны?


DrPass   (2006-12-22 10:23:00) [2]


> ЮЮ ©   (22.12.06 08:36) [6]

Телепатор, особо не напрягаясь, предположил, что у IBSQL1 тип TIBSQL. Это не наследник TDataSet.

> Там дело в том, что нужно получать количество звонков за
> последний час по выборке SELECT * FROM CALLS WHERE дата
> время

Лучший вариант - либо select count(*) from..., либо, если возвращаемый набор невелик, вытащить его целиком и посчитать


ЮЮ   (2006-12-22 08:36:00) [3]


> Кстати, у ibSQL1 нет метода last

кстати тип ibSQL1 не указан, но по косвенным признакам он похож не наследника TDataSet, а значит и Last у него быть должен.


Философ Огня   (2006-12-22 08:33:00) [4]

Кстати, у ibSQL1 нетметода last


ЮЮ   (2006-12-22 08:33:00) [5]

Если нужно только количечество и в Label, то - первый. Если же все записи в грид-е показать и где-то их кол-во - то второй.


Философ Огня   (2006-12-22 08:32:00) [6]

Кстати, у ibSQL1 нетметода last


Философ Огня   (2006-12-22 08:29:00) [7]

Извините. Не сообразил :-)
Там дело в том, что нужно получать количество звонков за последний час по выборке SELECT * FROM CALLS WHERE дата время и выдавать в Label'е это количество. И какой вариант лучше использовать?


ЮЮ   (2006-12-22 08:27:00) [8]

Если интересует именно количество, то его и надо спрашивать у сервера:
SELECT СOUNT(*)FROM CALLS WHERE
Если же интересует сколько записей закачал с сервера на клиент, то, естественно, их надо сначал закачать.  ibSQL1.Last; ibSQL1.RecordCount;


Наверх

Титульная страница Поиск, карта сайта Написать письмо