![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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
думай