DELPHI中使用SELECT语句,如何在WHERE前加入变量

Mform1.ADOQuery2.SQL.Add('SELECT');Mform1.ADOQuery2.SQL.Add('SUM(wkptimere)-1000生产能力,... Mform1.ADOQuery2.SQL.Add('SELECT ');
Mform1.ADOQuery2.SQL.Add('SUM(wkptimere) - 1000 生产能力 ,sum(wkptime) 计划工时,SUM(wkovt) 加班工时 from crpda where wkcl=:Sname and wksta>=:st and wksta<= :en group by wkptimere ');
Mform1.adoquery2.Parameters.ParamByName('Sname').Value:=cl ;
Mform1.adoquery2.Parameters.ParamByName('St').Value:=strtoint(edit1.Text) ;
Mform1.adoquery2.Parameters.ParamByName('en').Value:=strtoint(edit2.Text);
Mform1.ADOQuery2.Open;
Mform1.adoquery2.ExecSQL;
上面是语句代码,在上面的语句中 SUM(wkptimere) - 1000 这个格式的时候,数值是正确的。。但是我想把1000作为一个变量存在,只要1000为变量查询结果都会为空。
已经做过的测试包括
SUM(wkptimere) - :gs
Mform1.adoquery2.Parameters.ParamByName('gs').Value:=1000;
还有定义SQL变量
Mform1.ADOQuery2.SQL.Add('DECLARE @zz float ');
Mform1.ADOQuery2.SQL.Add('SET @zz=1000');
SUM(wkptimere) - @zz
以上两种方法查询结果都为空。。求助如果让1000作为可变量随意赋值
展开
 我来答
听不清啊
高粉答主

2013-08-07 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部
估计是你的变量名取得有点问题。你试一下:在'SET @zz=1000'之后,用msgbox(@zz)查一下结果。如未成功的话,请你将 @zz 改为 zz ,再试一下?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
HJ_3000
2013-08-07 · TA获得超过563个赞
知道小有建树答主
回答量:1264
采纳率:78%
帮助的人:57.1万
展开全部
Var
I: Integer;
Begin
I := 1000;
...
Mform1.ADOQuery2.SQL.Add(Format('SUM(wkptimere) - %d AS 生产能力 ', [I]));
...
追问
将练上后面的语句一起吗,这个实验了一次编译无法通过
追答
Var
I: Integer;
Begin
I := 1000;
With Mform1.ADOQuery2. Do
Begin
Close;
SQL.Clear;
SQL.Add('SELECT ');
SQL.Add( Format('SUM(wkptimere) - %d 生产能力,',[I]));
SQL.Add('sum(wkptime) 计划工时,SUM(wkovt) 加班工时');
SQL.Add('from crpda where wkcl=:Sname and wksta>=:st and wksta<= :en group by wkptimere ');
Parameters.ParamByName('Sname').Value := cl;
Parameters.ParamByName('St').Value := strtoint(edit1.Text);
Parameters.ParamByName('en').Value := strtoint(edit2.Text);
Open;
End;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式