-
Dmitry_177 (27.05.08 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 © (27.05.08 13:24) [1]
> DBRecordset.RecordCount почему-то всегда равно "-1", по
> идее это количество записей, которые какраз нужно считать.
> .
идея твоя порочна. забудь про RecordCount вообще.
кроме for в паскале есть и другие циклы, а у рекордсета есть свойство eof
думай -
Reindeer Moss Eater © (27.05.08 13:25) [2]как можно определить количество записей в DBRecordset чтобы потом в цикле считать их?
Для этого не надо знать количество записей. -
Dmitry_177 (27.05.08 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 © (27.05.08 13:35) [4]а если рекордсет пустой?
-
Anatoly Podgoretsky © (27.05.08 13:37) [5]> Dmitry_177 (27.05.2008 13:27:03) [3]
Ну тогда готовься к исключению. -
Smile (27.05.08 13:47) [6]Вместо repeat until используй
While not DBRecordset.EOF do
begin
end; -
Dmitry_177 (27.05.08 15:28) [7]
> а если рекордсет пустой?
> Ну тогда готовься к исключению.
> Вместо repeat until используй
> While not DBRecordset.EOF do
> begin
>
> end;
По идее так не должно исключения возникнуть.. Я правильно понимаю? -
> Я правильно понимаю?
Правильно.