请教ADODataSet1一语句(30分)

  • 主题发起人 主题发起人 swuis
  • 开始时间 开始时间
S

swuis

Unregistered / Unconfirmed
GUEST, unregistred user!
var aa01:integer;
begin
aa01:=5;
ADODataSet1.CommandText:='select * from t_item where fitemclass=aa01 and flevel=1 order by fnumber';
ADODataSet1.Active:=false;
ADODataSet1.Active:=true;
end;
提示出错
如直接付值如下则正确
begin
ADODataSet1.CommandText:='select * from t_item where fitemclass=5 and flevel=1 order by fnumber';
ADODataSet1.Active:=false;
ADODataSet1.Active:=true;
end;
请指正
 
在ADODataSet1.CommandText:='select * from t_item where fitemclass=aa01 and flevel=1 order by fnumber'句中,sql解释会认为fitemclass的值为aa01,而不是5。
 
我希望fitemclass=aa01 中的aa01成为变量
 
是否可以写成如下形式:
var aa01:integer;
begin
aa01:=5;
ADODataSet1.CommandText:='select * from t_item where fitemclass='+inttostr(aa01)+ 'and flevel=1 order by fnumber';
ADODataSet1.Active:=false;
ADODataSet1.Active:=true;
 
这和SQL解释器无关嘛,是字符串的表达方式有问题。两个引号之间的部分是常量字串,和外界的变量什么的是没有关系的
 
你这样弄吧aao变成了一个字符串了,当然不行了,你应该用+'''aa0'''+来处理就行了,提醒一下是单引号
 
ADODataSet1.CommandText:='select * from t_item where fitemclass='+aa01+' and flevel=1 order by fnumber';
 
你想要执行的SQL语句是什么,程序实际执行的SQL是什么,你再比较一下,就知道哪里错了
 
或者
ADODataSet1.CommandText:='select * from t_item where cast(fitemclass as char(2))='+''''+inttostr(aa01)+''''+' and flevel=1 order by fnumber';

 

Similar threads

后退
顶部