Delphi 如何将TParams(TQuery)对象转换为TpaParameters(ADO)对象。?
我正在编写一个包含一些TQuery组件的遗留代码。我试图创建一个函数,将TQuery参数转换为TParameters,以便将它们分配到ADO组件(如ADOQuery或ADODataSet)的Parameters属性中 我尝试了以下我从互联网上得到的Delphi 如何将TParams(TQuery)对象转换为TpaParameters(ADO)对象。?,delphi,ado,Delphi,Ado,我正在编写一个包含一些TQuery组件的遗留代码。我试图创建一个函数,将TQuery参数转换为TParameters,以便将它们分配到ADO组件(如ADOQuery或ADODataSet)的Parameters属性中 我尝试了以下我从互联网上得到的 function ConvertToADOParms(Owner: TADODataset; aParams: TParams): TParameters; var i: integer; begin // Convert a standard
function ConvertToADOParms(Owner: TADODataset; aParams: TParams): TParameters;
var i: integer;
begin
// Convert a standard TParams object to an ADO-specific TParameters object
Result :=nil;
try
if aParams = nil then exit;
Result :=TParameters.create( Owner, TParameter);
for i:=0 to aParams.count - 1 do
begin
if aParams[i] = nil then continue;
with Result.AddParameter do
begin
Name := aParams[i].Name;
Datatype :=aParams[i].DataType;
Direction :=TParameterDirection(aParams[i].ParamType);
Size :=aParams[i].size;
Value :=aParams[i].value;
end;
end;
except
on e:exception do
begin
Result :=nil;
showmessage('Could not convert standard parameter object to ADO parameter object: '+e.message);
end;
end;
end;
但是我得到了无效的类类型转换错误。当我调试代码时,我发现错误发生在ADODB单元中的这个函数上
function TParameters.GetCommand: TADOCommand;
begin
Result := GetOwner as TADOCommand;
end;
请帮忙。我使用的是Delphi 5我对函数原型没有多大意义。它请求函数返回的集合的所有者,因此IMHO应该是独立的 我将简单地摆脱它,直接使用传递的ADO对象进行操作。例如:
procedure FillParamsADO(Params: TParams; Dataset: TADODataset);
var
i: Integer;
begin
Dataset.Parameters.Clear;
for i := 0 to Params.Count-1 do
begin
with Dataset.Parameters.AddParameter do
begin
Name := Params[i].Name;
DataType := Params[i].DataType;
Direction := TParameterDirection(Params[i].ParamType);
Size := Params[i].Size;
Value := Params[i].Value;
end;
end;
end;
@维多利亚非常感谢为我工作的一切。那么问题是由于覆盖造成的吗?