Delphi中用ADOQuery, 变量可否重用?(200分)

  • 主题发起人 主题发起人 张丽敏
  • 开始时间 开始时间

张丽敏

Unregistered / Unconfirmed
GUEST, unregistred user!
在ADOQuery写一SQL语句:
select PART from
where PART =:P1
union all
select PART from
where PART =:P2

在Delphi 赋参数:
ADOQuery.Close;
ADOQuery.Parameters.ParamByName('P1').Value := '12345';
ADOQuery.Parameters.ParamByName('P2').Value := '12345';
ADOQuery.Open;

这样可以运行,
其实P1,P2都赋同一值.
能否只用一个(P1)参数?

(我用 select PART from
where PART =:P1
union all
select PART from
where PART =:P1
这样不行,运行的时候第二个P1它不能识别.)


ADOQuery中,怎样才能使变量可重用?
谢谢!!
 
可以的。用ADOQuery.Parameters[0].value,ADOQuery.Parameters[1].value
但是这样会令程序很难读
 
用ParamByName肯定不能重名了!用数据方式吧,像楼上那位说的那样。
 
用ParamByName肯定不能重名了!
但你的ADOQuery可以这样写:
parameters P1 As string;
select PART from
where PART =P1
union all
select PART from
where PART =P1

在Delphi 赋参数:
ADOQuery.Close;
ADOQuery.Parameters.ParamByName('P1').Value := '12345';
ADOQuery.Open;

 
对不起,手快写多了个As。应该是:

parameters P1 string;
select PART from
where PART =P1
union all
select PART from
where PART =P1

在Delphi 赋参数:
ADOQuery.Close;
ADOQuery.Parameters.ParamByName('P1').Value := '12345';
ADOQuery.Open;

 
s:=format('select PART from'+
'where PART =%s'+
' union all select PART from where PART =%s',[P1,P1]);
adoquery.close;
adoquery.add(s);
adoquery.open;

//写在unit里
 
本来在bde合其他数据控件里面,参数用的是TParam
select PART from where PART =:P1 union all select PART from where PART =:P1
只赋值一个p1就可以了,

不过ado控件的参数用的是TParameter,就不行了,可能是bug
 
lzliang的方法我试到还是不行,
它提示: "String附近有语法错误!"

PiPi: 你能详细说明ado控件(ADOQuery)的参数是怎样赋值吗?

望你们继续请教!
谢谢!!

 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
916
SUNSTONE的Delphi笔记
S
后退
顶部