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

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

ADO API определить количество записей [D7, WinXP]


Dmitry_177 ©   (2008-05-27 13:13:00) 

Делаю соединение с БД и затем посредством SQL-запроса нужно считать информацию с таблицы.. Соединение с SQL-запросом сделал так:
var
 DBConnection: _Connection;
 DBRecordset: _Recordset;

begin
   try
     DBConnection := CoConnection.Create;
     DBConnection.Provider := 'Microsoft.Jet.OLEDB.4.0';
     DBConnection.ConnectionString := 'Data Source=c:\1.mdb';
     DBConnection.Open('', '', '', -1);

     DBRecordset := CoRecordSet.Create;
     DBRecordset.Open('SELECT * FROM table', DBConnection, adOpenForwardOnly, adLockPessimistic, adCmdText);


теперь нужно считать все из DBRecordset.. Но.. DBRecordset.RecordCount почему-то всегда равно "-1", по идее это количество записей, которые какраз нужно считать.. Но т.к. оно равно "-1" этот код уже не будет работать:
     for iRec := 0 to DBRecordset.RecordCount - 1 do
       begin
         AddInTable(string(DBRecordset.Fields.Item[1].Value), string(DBRecordset.Fields.Item[2].Value));

         DBRecordset.MoveNext;
       end;


Подскажите пожалуйста как можно определить количество записей в DBRecordset чтобы потом в цикле считать их? Или может как-то еще можно?


palva   (2008-05-27 16:42:00) [1]


> Я правильно понимаю?

Правильно.


Dmitry_177   (2008-05-27 15:28:00) [2]


> а если рекордсет пустой?


> Ну тогда готовься к исключению.


> Вместо repeat until используй
> While not DBRecordset.EOF do
> begin
>
> end;

По идее так не должно исключения возникнуть.. Я правильно понимаю?


Smile   (2008-05-27 13:47:00) [3]

Вместо repeat until используй
While not DBRecordset.EOF do
begin

end;


Anatoly Podgoretsky   (2008-05-27 13:37:00) [4]

> Dmitry_177  (27.05.2008 13:27:03)  [3]

Ну тогда готовься к исключению.


Reindeer Moss Eater   (2008-05-27 13:35:00) [5]

а если рекордсет пустой?


Dmitry_177   (2008-05-27 13:27:00) [6]

     repeat
       AddInTable(string(DBRecordset.Fields.Item[1].Value), string(DBRecordset.Fields.Item[2].Value));
       DBRecordset.MoveNext;
     until
       DBRecordset.EOF;


придумал ))


Reindeer Moss Eater   (2008-05-27 13:25:00) [7]

как можно определить количество записей в DBRecordset чтобы потом в цикле считать их?

Для этого не надо знать количество записей.


Palladin   (2008-05-27 13:24:00) [8]


> DBRecordset.RecordCount почему-то всегда равно "-1", по
> идее это количество записей, которые какраз нужно считать.
> .

идея твоя порочна. забудь про RecordCount вообще.

кроме for в паскале есть и другие циклы, а у рекордсета есть свойство eof

думай


Наверх

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