delphi - 如何获得已删除记录的数量?

标签 delphi ado delphi-xe4

我尝试了这个:

function TMyClass.removeRecords(...) : integer;
var
  aC : TADOCommand;
  aRS : _RecordSet;
begin
  aC := createADOCommand;
  try
    aC.Connection := fConnection;
    aC.commandText := getDeleteModelSQLCommand( ... );
    aRS := aC.Execute;
    {$ifdef debug_AlwaysOne}
      result := 1;
    {$else}
      result := aRS.RecordCount;
    {$endif}
  finally
    releaseADOCommand( aC );
  end;
end;


在定义了debug_AlwaysOne条件的情况下,它可以正常运行。

但是,在读取RecordCount的行上,将引发错误:


关闭对象时不允许操作


有什么方法可以获取已删除记录的数量?我知道我可以在删除之前执行汇总查询。但是我可以在没有其他SQL命令调用的情况下执行此操作吗?

最佳答案

使用具有TADOCommand.Execute()输出参数的RecordsEffected的重载版本:

function Execute(var RecordsAffected: Integer; const Parameters: OleVariant): _Recordset; overload;


例如:

function TMyClass.removeRecords(...) : integer;
var
  aC : TADOCommand;
begin
  aC := createADOCommand;
  try
    aC.Connection := fConnection;
    aC.commandText := getDeleteModelSQLCommand( ... );
    {$ifdef debug_AlwaysOne}
    aC.Execute;
    Result := 1;
    {$else}
    aC.Execute(Result, EmptyParam);
    {$endif}
  finally
    releaseADOCommand( aC );
  end;
end;

关于delphi - 如何获得已删除记录的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42648784/

相关文章:

delphi - 如何加快Delphi x64编译时间?

c# - .net 类型在类型库中被 IUnknown 替换

delphi - 印地 "Could not load SSL library"德尔福 XE2 IW14

.net - 在 Visual Studio 中进行调试和不进行调试时,.NET 程序的行为有何不同?

德尔福7 : Get attached monitor properties

excel - 为什么 ADO 连接即使在只读状态下仍会创建 "ldb"锁定文件?

delphi - 对于多个日历、日期和持续时间,建议使用什么数据结构?

delphi - 在 Delphi 的 Unicode 版本中 Access 记录的真实缓冲区 - ADO

vbscript - 整数创建参数

ios - Delphi XE4 ios 播放视频不工作......只有声音