gpt4 book ai didi

delphi - 如何将 TParams (TQuery) 对象转换为 TParameters (ADO) 对象?

转载 作者:行者123 更新时间:2023-12-02 02:40:51 26 4
gpt4 key购买 nike

我正在编写包含一些 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

最佳答案

我对函数原型(prototype)不太了解。它请求函数返回的集合的所有者,因此恕我直言,应该是独立的。

我会简单地摆脱它并直接使用传递的 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;

关于delphi - 如何将 TParams (TQuery) 对象转换为 TParameters (ADO) 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44299362/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com