Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.12.21;
Скачать: CL | DM;

Вниз

ADO API определить количество записей   Найти похожие ветки 

 
Dmitry_177   (2008-05-27 13:13) [0]

Делаю соединение с БД и затем посредством 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 чтобы потом в цикле считать их? Или может как-то еще можно?


 
Palladin ©   (2008-05-27 13:24) [1]


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

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

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

думай


 
Reindeer Moss Eater ©   (2008-05-27 13:25) [2]

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

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


 
Dmitry_177   (2008-05-27 13:27) [3]

     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:35) [4]

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


 
Anatoly Podgoretsky ©   (2008-05-27 13:37) [5]

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

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


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

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

end;


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


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


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


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

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


 
palva ©   (2008-05-27 16:42) [8]


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

Правильно.



Страницы: 1 вся ветка

Текущий архив: 2008.12.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.03 c
15-1224236239
DevilDevil
2008-10-17 13:37
2008.12.21
Чем D6 лучше, чем D5, а D7 - лучше D6 ?


4-1202719189
lead-in
2008-02-11 11:39
2008.12.21
Socket`ы или кривые руки


2-1226305803
timekiller
2008-11-10 11:30
2008.12.21
XML с дочерьми ..


2-1226519181
IVAKA_27
2008-11-12 22:46
2008.12.21
TreeNode


2-1226676190
Thor234
2008-11-14 18:23
2008.12.21
Опять о DBGrid и выпадающем списке