Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何将TParams(TQuery)对象转换为TpaParameters(ADO)对象。?_Delphi_Ado - Fatal编程技术网

Delphi 如何将TParams(TQuery)对象转换为TpaParameters(ADO)对象。?

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

我正在编写一个包含一些TQuery组件的遗留代码。我试图创建一个函数,将TQuery参数转换为TParameters,以便将它们分配到ADO组件(如ADOQuery或ADODataSet)的Parameters属性中

我尝试了以下我从互联网上得到的

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;

@维多利亚非常感谢为我工作的一切。那么问题是由于覆盖造成的吗?