起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 209|回复: 7

【搞定】TSQLDataSet的问题**

[复制链接]
发表于 2004-12-7 13:30:58 | 显示全部楼层 |阅读模式
在TSQLDataset操作数据的时候,也就是调用Execute执行
Insert,Update,Delete如何返回操作的记录数,Delphi的TSqlDataset的
ExecSql是可以返回值的.
回复

使用道具 举报

发表于 2004-12-7 15:49:52 | 显示全部楼层
楼主,没有太明白你的意思,请进一步描述。

另外,请楼主告知原始的需求,好吗?这样便于我们给方案
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-12-7 21:05:11 | 显示全部楼层
请看Delphi的EXECSQL函数的描述
function ExecSQL(ExecDirect: Boolean = False): Integer; override;
Executes a query or stored procedure that does not return a set of records.
ExecSQL returns the number of rows affected by the executed command. This becomes the value of the RowsAffected property.
我想知道TSqlDataSet在执行Execute以后影响的记录数目
简单点说就是Delete语句执行以后我想知道具体有多少条记录被删除了,不能用删除之前执行Select语句的方式,那样效率太低
//例子
function  _ExecSql(Sql:String)LBoolean
begin
  if Delete的记录数<=0 then Raise Exception.Create('Error');
end;
明白????,Update语句也是一样的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-12-8 11:54:42 | 显示全部楼层
顶!!!!!!!!!!!!!!!!!!!!!
回复 支持 反对

使用道具 举报

发表于 2004-12-8 16:11:13 | 显示全部楼层
现在可以先使用I := Connection.Execute('');来解决这个问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-12-8 20:32:34 | 显示全部楼层
你回答的问题在没有事务提交的情况下是正确的,在有事务的时候是错误的,而我们恰恰是要在事务中使用,请看以下测试代码:
procedure TMainForm.Exec(A:String);
var
  i:Integer;
begin
  with  DataSetds do
  begin
    Close;
    i := Connection.ExecuteSQL('delete from bd_invtype_dt where SN_PRE=''AB''');
    Edit1.Text :=Sysutils.IntToStr(i);
    if i<=0 then Raise Exception.Create('Error');
  end;
end;


procedure TMainForm.BitBtn1Click(Sender: TObject);
var
  AHandle:TTransactionHandle;
begin
  with  DataSetds do
  begin
    AHandle := Connection.Transaction.Start(False);
    try
      Exec('delete from bd_invtype_dt where SN_PRE=''AC''');
      Connection.Transaction.Commit(AHandle);
    except
      Connection.Transaction.Rollback(AHandle);
      Raise;
    end;
  end;
end;

在事务中无论是否执行有无数据的删除,最后都会触发异常,首先说明i := Connection.ExecuteSQL('delete from bd_invtype_dt where SN_PRE=''AB''');在没有事务的情况下返回1
请教如何处理???????????????????
请尽快回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-12-8 20:45:43 | 显示全部楼层
不好意思,我解决这个问题了
回复 支持 反对

使用道具 举报

发表于 2007-12-26 15:07:18 | 显示全部楼层
请楼主分享一下方法好吗 我也正受此问题困扰
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-4 10:18 , Processed in 0.043158 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表