大侠请教SQL查询问题(50分)

  • 主题发起人 主题发起人 LJYY20000102
  • 开始时间 开始时间
L

LJYY20000102

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序运行如下代码出错 HZCL 为数值型
估计('+HZCL+')有问提大侠帮忙看看
ADOQuery3.Close;
ADOQuery3.sQL.Clear;
ADOQuery3.SQL.Add('SELECT cpxm,dw,(('+ttjhcbsl+')/('+HZCL+')) as kjhxhsl,('+ttjhcbje+'/100) as kjhxhje FROM cbjsd123zhz where bz<>10 and bz<>0 and cpmc='''+ComboBox1.text+''' ORDER BY BZ');
ADOQuery3.OPEN;
 
这个问题没人会吗?
 
我不知道你的那个HZCL是什么东东
但是SQL语句是字符串
既然是字符串,就不可能和数值型相加
 
('+ttjhcbsl+')/('+HZCL+')) ,('+ttjhcbje+'/100)
这两个东东干什么的啊?
为什么一定要在SQL语句中作运算呢?不能运算完了用变量代入吗?
 
提点小建议,我这样的书写风格会不会更好一点:
var
SQL: string;
begin
SQL:='SELECT cpxm,dw,(%s/%s) as kjhxhsl,(%s/100) as kjhxhje '
+' FROM cbjsd123zhz '
+' where bz<>10 and bz<>0 and cpmc=%s ORDER BY BZ';
SQL:=format(SQL, [floattostr(ttjhcbsl), floattostr(HZCL),
Quoter(ComboBox1.text) ]);
ADOQuery3.SQL.Add(SQL);
end;
当然这是一个写法,其中还有很多问题,如除数可以保证不为零吗? 需不需要用cast指定小数位? 还有,都不知道你写这句SQL想表达什么意思,怎么知道出错在哪里?
 
还有,把出错信息写出来。
 
后退
顶部