怎样在Delphi中得到从SQL Server中Fetch到的数据和记录条数(100分)

  • 主题发起人 主题发起人 surpass
  • 开始时间 开始时间
S

surpass

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在Delphi中取出在SQL Server中Fetch到的数据信息和Fetch到记录条数
具体如下:
with ADOQ do
begin
Close;
SQL.clear;
SQL.Add('DECLARE cur_tbnote CURSOR FOR ' +
'SELECT Tb_no,Tb_name,Tb_num,Tb_amt FROM tbnote ' +
'WHERE Tb_no=:Tno FOR UPDATE');
Parameters.ParamByName('Tno').Value := Inttostr(Ltp.no);
SQL.Add('OPEN cur_tbnote');
SQL.Add('FETCH NEXT FROM cur_tbnote');
SQL.Add('WHILE @@FETCH_STATUS = 0');
SQL.Add('BEGIN FETCH NEXT FROM cur_tbnote END');
ExecSQL;
end; // withith
如果只有一条,象上面那样做都会返回两条(一条空的),
用什么办法能取出符合条件的那条记录到DELPHI中!?(用FIELDBYNAME不行)
如果有多条,怎样在DELPHI中得到这个记录条数?
——这个问题在C中好象简单,但在Delphi中好象不容易办到!
 
问题是在Query Analyzer里也是这样啊,不关Delphi的事。
一定要用Cursor吗?我觉得这样的功能不用Cursor也应该可以实现吧?
>>怎样在DELPHI中得到这个记录条数?
用@@RowCount?
 
因为操作关系到几个表(在以后会),所以一定要用FETCH
在DELPHI中得到这个记录条数用@@RowCount不行!
@@ROWCOUNT
Returns the number of rows affected by the last statement.
它好象只能返回两个值
一个是开始的0,一个是FETCH住的一条(多条时返回也是1)
 
surpass老兄,不要老想着写SQL脚本语句,在DELPHI用的可是数据集(Query,Table)
要实现你取出每一条记录的功能,是下面这样的:
query.Close;
query.SQL.clear;
query.SQL.Add('SQL 语句');
query.open;

//得到记录数
count:=query.recordcount;

//循环取每一条记录
query.First;
while not query.EOF do
begin
对取出来的记录进行处理;
query.Next;
end;

 
lipingcool:你的可能是一种方法,但对我来说还是不实用!
我只能用SQL语句实现,因为关系多表的操作,必须定义光标!
我现在基本上已经实现,取记录还是用参数,记录条数则用@@CURSOR_ROWS
有兴趣的朋友可以试一下!
 
多人接受答案了。
 
后退
顶部