вопрос по SQLQuery

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
virus_hm
новенький
Сообщения: 22
Зарегистрирован: 19.09.2009 23:52:40

вопрос по SQLQuery

Сообщение virus_hm »

Пример кода
********
sqlQMain.SQL.Clear;
sqlQMain.SQL.Add('SELECT * FROM ALLVID');
sqlQMain.Open;
j:=sqlQMain.RecordCount;
********

Почему то j всегда <=10, хотя записей в таблице может быть на много больше
Подскажите в какую сторону искать
Logo
постоялец
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Сообщение Logo »

Если для цикла, то используйте функцию EOF
например:

Код: Выделить всё

  sqlQMain.First;
   repeat
    // Полезный код
    sqlQMain.Next;
   until sqlQMain.EOF;


А для получения количества записей по конкретному запросу воспользуйтесь:

Код: Выделить всё

SELECT COUNT(*)
  FROM ALLVID;

Дело в том, что SQLQuery не знает, сколько будет строк по данному запросу, для этого ему нужно было бы выполнить дополнительный запрос, аналогичный описанному выше, но это в большинстве лишняя операция, поэтому определение количества записей полагается на программиста. А RecordCount показывает, вроде, количество забуферированых/зарезервированых строк.
virus_hm
новенький
Сообщения: 22
Зарегистрирован: 19.09.2009 23:52:40

Сообщение virus_hm »

Именно для цыкла и нужно. Спасиба за совет.
Ответить