SQL запрос через ADO

-===DiMas===-

Пытаюсь получить количетсво записей для TADOQuery но вываливается ошибка. В чем может быть проблема?
<b>procedure</b> TForm1.Button3Click(Sender: TObject);
<b>var</b> i: integer;
 Q: TADOQuery;
<b>begin</b>
 Q := TADOQuery.Create(<b>nil</b>);
 Q.Connection := ADO;
 Q.SQL.Add('SELECT PHONE FROM ACCOUNTS WHERE PHONE LIKE ''%928%''');
 Q.Active := true;
 <i>// До этого места ошибок никаких не вываливается</i>
 ShowMessage(IntToStr(Q.DataSource.DataSet.RecordCount));
 <i>// ОШИБКА (см.файл)</i>
<b>end</b>;
8 ответов

-===DiMas===-

<b>procedure</b> TForm1.Button3Click(Sender: TObject);
<b>var</b> i: integer;
 Q: TADOQuery;
<b>begin</b>
 Q := TADOQuery.Create(<b>nil</b>);
 Q.Connection := ADO;
 Q.SQL.Add('SELECT COUNT(*) FROM ACCOUNTS WHERE PHONE LIKE ''%928%''');
 Q.Active := true;
 <i>// До этого места ошибок никаких не вываливается</i>
 ShowMessage(IntToStr(Q.Fields[<b>0</b>].AsInteger));
 <i>// ОШИБКА (см.файл)</i>
<b>end</b>;
Что говорится при этом?З.Ы. СУБД-то всё таки какая?З.З.Ы. И попробуй использовать TADODataSet вместо TADOQuery.


-===DiMas===-

уже разобрался. Надо обращаться через Recordset
ShowMessage(IntToStr(Q.Recordset.RecordCount));


-===DiMas===-

Куликов Алексей,СУБД MS SQL Server 2000


-===DiMas===-

ShowMessage(IntToStr(Q.DataSource.DataSet.RecordCount));
Ошибка здесь DataSource = nil
уже разобрался. Надо обращаться через Recordset
Не надоИ вообще весь код вызывает дикое неприятие.--http://www.podgoretsky.com


-===DiMas===-

Я скажу что надо.Надо учиться, учиться, учиться--http://www.podgoretsky.com


-===DiMas===-

на самом деле IntToStr(Q.RecordCount)


-===DiMas===-

Надо получить записи - используйте "Select Count(*)", а не RecordCount.


-===DiMas===-

Надо получить записи - используйте "Select Count(*)", а не RecordCount.
+использовать параметры вместо такой ерунды
Q.SQL.Add('SELECT PHONE FROM ACCOUNTS WHERE PHONE LIKE ''%928%''');
----www.hramin.jino-net.ru