如何获取已删除记录的数量?
问题描述:
我尝试这样做:如何获取已删除记录的数量?
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
行,它提出了一个错误:
Operation is not allowed when the object is closed
有没有什么办法让删除记录的数目?我知道我可以在删除之前执行一个聚合查询。但是我可以在没有其他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;
如果我未初始化的OLEVariant调用它(你把它命名为EmptyParam这样),它说:“参数对象定义不正确,提供的信息不正确或不完整。”在调用方法之前应该如何处理OLEVariant? –
你是什么意思,你称它与一个uninitailized OLEVariant? EmptyParam是一个已经存在于System.Variants单元中的函数,它表示一个未使用的可选参数。 – Fero
我只是“创建”了一个OLEVariant类型的局部变量。 –