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作为可变量随意赋值
var bl integer;
bl:=1000;
Mform1.ADOQuery2.SQL.Add('SUM(wkptimere) - '+inttostr(bl)+' 生产能力 ,sum(wkptime) 计划工时,SUM(wkovt) 加班工时
inttostr(bl),这个有问题啊 wkptimere的类型是FOLAT的,不需要转换成字符吧
无法执行这条语句
可以执行了但是结果还是为空。。但是 SUM(wkptimere) - 1000 时 结果就是正确的
inttostr(bl),这个有问题啊 wkptimere的类型是FOLAT的,不需要转换成字符吧
无法执行这条语句
'SUM(wkptimere) - ' 这是一个string形的字符串吧?
后面的' 生产能力 ,sum(wkptime) 计划工时,SUM(wkovt)...'也是string形的字符串吧
字符串链接,所以要把integer或者float的转换为string啊
inttostr(bl),这个有问题啊 wkptimere的类型是FOLAT的,不需要转换成字符吧
无法执行这条语句
'SUM(wkptimere) - ' 这是一个string形的字符串吧?
后面的' 生产能力 ,sum(wkptime) 计划工时,SUM(wkovt)...'也是string形的字符串吧
字符串链接,所以要把integer或者float的转换为string啊
这几个字段都是float类型的,全部的语句就在这里。。及时只执行SUM(wkptimere) - 1000,这个也是没有结果的,我觉得好像就是这里的问题
Mform1.ADOQuery2.SQL.Add('SELECT ');
Mform1.ADOQuery2.SQL.Add( Format('SUM(wkptimere) - %d 生产能力,',[bl]));
Mform1.ADOQuery2.SQL.Add('sum(wkptime) 计划工时,SUM(wkovt) 加班工时 from crpda where wkcl=:Sname and wksta>=:st and wksta<= :en group by wkptimere ');
//Mform1.adoquery2.Parameters.ParamByName('gs').Value:=1000;
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;关键是利用了FORMAT格式
var
sqlstr:string;
sqlstr:='SUM(wkptimere)-1000 as 生产能力,sum(wkptime) as 计划工时,SUM(wkovt) as 加班工时 from crpda where wkcl=';
sqlstr:=sqlstr+''''+cl+''''+' and wksta>='+''''+edit1.text+''''+' and wksta<='+''''+edit2.test+''''+' group by wkptimere';
adoquery2.close;
adoquery2.sql.clear;
adoquery2.sql.add(sqlstr);
adoquery2.open;上面这段话是我自己敲打的可能有错,自己改改,不要用插入传递,难用死。
var
sqlstr:string;
sqlstr:='select SUM(wkptimere)-1000 as 生产能力,sum(wkptime) as 计划工时,SUM(wkovt) as 加班工时 from crpda where wkcl=';
sqlstr:=sqlstr+''''+cl+''''+' and wksta>='+''''+edit1.text+''''+' and wksta<='+''''+edit2.test+''''+' group by wkptimere';
adoquery2.close;
adoquery2.sql.clear;
adoquery2.sql.add(sqlstr);
adoquery2.open;showmessage(sqlstr) --看看sqlstr是不是你想要的sql语句,不是的话就调整