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作为可变量随意赋值 展开
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作为可变量随意赋值 展开
2个回答
展开全部
估计是你的变量名取得有点问题。你试一下:在'SET @zz=1000'之后,用msgbox(@zz)查一下结果。如未成功的话,请你将 @zz 改为 zz ,再试一下?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Var
I: Integer;
Begin
I := 1000;
...
Mform1.ADOQuery2.SQL.Add(Format('SUM(wkptimere) - %d AS 生产能力 ', [I]));
...
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;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询