如何获取已删除记录的数量?

时间:2017-03-07 12:49:24

标签: 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命令调用,我可以这样做吗?

1 个答案:

答案 0 :(得分:4)

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

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;