如何将参数传递给ADOQuery对象? [英] How to pass parameters to an ADOQuery object?

查看:360
本文介绍了如何将参数传递给ADOQuery对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Delphi 7和Oracle中使用ADOQuery。我将参数传递到ADOQuery时收到错误。我使用了以下行。请帮助我找出错误。

  ADOQuery.Sql.text:='select * from temp_table'+ 
'其中column1在(select column from table2 where id =:id)和id =:id';
ADOQuery.Parameters.ParamByValue('id')。value ='abc';
ADOQuery.open;

当我打开查询我会收到以下错误:


参数对象定义不正确。提供不一致或不完整的信息。



解决方案

我们有同样的问题,我们结束了类TParameters如下:



声明:

  TMyParameter =类(TParameter)
private
函数GetAsValue:variant;
过程SetAsValue(const值:variant);
public
属性值:变体读取GetAsValue写入SetAsValue;
结束

实施:

 code> procedure TMyParameter.SetAsValue(const Value:variant); 
var
iPar:Integer;

开始
为iPar:= 0到Collection.Count - 1 do
if(Name = TParameter(Collection.Items [iPar])。Name)then
TParameter(Collection.Items [iPar])。
结束

函数TMyParameter.GetAsValue:variant;
begin
结果:= inherited Value;
结束

如何使用:

  TMyParameter(ADOQuery.Parameters.ParamByName('id'))。AsValue:='abc'; 

我希望它有帮助。


I am using ADOQuery in Delphi 7 and Oracle. I am getting error while passing parameters to ADOQuery. I have used following line. Please help me to identify error.

ADOQuery.Sql.text:= 'select * from temp_table '+
        'where column1 in (select column from table2 where id=:id) and id=:id';
ADOQuery.Parameters.ParamByValue('id').value= 'abc';
ADOQuery.open;

when I open the query i will get following error:

Parameter object is improperly defined. Inconsistent or incomplete information is provided.

解决方案

We have the same problem, we ended "masking" the class TParameters like this:

Declaration:

TMyParameter = class(TParameter)
private
  function GetAsValue: variant;
  Procedure SetAsValue(const Value: variant);
public
  property Value: variant read GetAsValue write SetAsValue;
end;

Implementation:

procedure TMyParameter.SetAsValue(const Value: variant);
var
  iPar: Integer;

begin
  for iPar:= 0 to Collection.Count - 1 do
    if (Name = TParameter(Collection.Items[iPar]).Name) then
      TParameter(Collection.Items[iPar]).Value:= Value;
end;

function TMyParameter.GetAsValue: variant;
begin
  Result:= inherited Value;
end;

And how to use:

TMyParameter(ADOQuery.Parameters.ParamByName('id')).AsValue:= 'abc';

I hope it helps.

这篇关于如何将参数传递给ADOQuery对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆