首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将TParams (TQuery)对象转换为TParameters对象?

如何将TParams (TQuery)对象转换为TParameters对象?
EN

Stack Overflow用户
提问于 2017-06-01 05:45:56
回答 1查看 611关注 0票数 2

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

我尝试了我从网上得到的以下内容。

代码语言:javascript
复制
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单元中的这个函数发生了错误。

代码语言:javascript
复制
function TParameters.GetCommand: TADOCommand;
begin
  Result := GetOwner as TADOCommand;
end;

请帮帮忙。我用的是德尔菲5

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-01 07:09:38

我对这个功能原型不太了解。它请求拥有函数返回的集合的所有者,如果IMHO是独立的,则请求所有者。

我只需去掉它,直接使用传递的ADO对象进行操作。例如:

代码语言:javascript
复制
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;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44299362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档