Главная страница
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.022 c
2-1226410134
***mikle***
2008-11-11 16:28
2008.12.21
сбивается указатель


8-1188473003
T54
2007-08-30 15:23
2008.12.21
TVideoGraber


2-1226575325
Sveta
2008-11-13 14:22
2008.12.21
создание массива для button


2-1224144320
lewka
2008-10-16 12:05
2008.12.21
Форма по верх всех окон


2-1226666724
vegarulez
2008-11-14 15:45
2008.12.21
Вопрос про taCenter у TLabel`a(vcl)