请高手解决一个SQL查询参数调用问题。(3分)

  • 主题发起人 主题发起人 maomao888
  • 开始时间 开始时间
M

maomao888

Unregistered / Unconfirmed
GUEST, unregistred user!
dlnew-2我还可以问你一个问题吗:
还是关于查询的问题:
我在QUERY中写了一段SQL,如下:
select b.cbzxbh,b.cbzxmc,b.ccpnjh/12,b.bcpnjh/12,sum(a.drcl),0,sum(a.drcl)/(b.ccpnjh/12),0 from db2admin.t_scrbmx a,erptest.t_acpczjh b
where b.cbzxbh=a.jgbh and a.rq>:d1 and a.rq<:d2
group by b.cbzxbh,b.cbzxmc,b.ccpnjh,b.bcpnjh
union all
select b.cbzxbh,b.cbzxmc,b.ccpnjh/12,b.bcpnjh/12,0,sum(c.drcl),0,sum(c.drcl)/(b.bcpnjh/12) from db2admin.t_scrbmx c,erptest.t_acpczjh b
where b.cbzxbh=c.jgbh and c.rq>:d1 and c.rq<:d2 and c.wlbh like '%-%'
group by b.cbzxbh,b.cbzxmc,b.ccpnjh,b.bcpnjh
其实:D1,D2,是两个参数,我通过以下在一个BUTTON中,给它传的参数:如下:
form1.Query1.ParamByName('d1').asdate:=strtodate(form1.edit3.text);
form1.query1.ParamByName('d2').asdate:=strtodate(form1.edit4.text);
if form1.query1.prepared=false then
form1.query1.prepare;
form1.query1.open;
end;

此外,我还想分别通过BHZXBH,JHNF,JGBH,来分别进行(通过传参数)查询,这两个字段,分
别从我上面SQL写到的erptest.t_acpczjh 提取。
关于这三个分别查询的参数如何调用?
 
不可以请教你一个问题吗?有没有QQ,GG?
还是关于查询的问题:
我在QUERY中写了一段SQL,如下:
select b.cbzxbh,b.cbzxmc,b.ccpnjh/12,b.bcpnjh/12,sum(a.drcl),0,sum(a.drcl)/(b.ccpnjh/12),0 from db2admin.t_scrbmx a,erptest.t_acpczjh b
where b.cbzxbh=a.jgbh and a.rq>:d1 and a.rq<:d2
group by b.cbzxbh,b.cbzxmc,b.ccpnjh,b.bcpnjh
union all
select b.cbzxbh,b.cbzxmc,b.ccpnjh/12,b.bcpnjh/12,0,sum(c.drcl),0,sum(c.drcl)/(b.bcpnjh/12) from db2admin.t_scrbmx c,erptest.t_acpczjh b
where b.cbzxbh=c.jgbh and c.rq>:d1 and c.rq<:d2 and c.wlbh like '%-%'
group by b.cbzxbh,b.cbzxmc,b.ccpnjh,b.bcpnjh
其实:D1,D2,是两个参数,我通过以下在一个BUTTON中,给它传的参数:如下:
form1.Query1.ParamByName('d1').asdate:=strtodate(form1.edit3.text);
form1.query1.ParamByName('d2').asdate:=strtodate(form1.edit4.text);
if form1.query1.prepared=false then
form1.query1.prepare;
form1.query1.open;
end;

此外,我还想分别通过BHZXBH,JHNF,JGBH,来分别进行(通过传参数)查询,这两个字段,分
别从我上面SQL写到的erptest.t_acpczjh 提取。
关于这三个分别查询的参数如何调用?
 
方法一:
在原有where 子句的后面加入 'and cbzxbh like :cb and jgbh like :jg and jhnf >= :d3 and jhnf < :d4'
在对这三个条件不作要求时,
parambyname('cb').asstring := '%';
parambyname('jg').asstring := '%';
parambyname('d3').asdatetime := strtodate('1900-01-01');
parambyname('d4').asdatetime := strtodate('9999-12-31');
有要求时,分别给出相应的值。
方法二:
可以设定query的filter进行过滤。
方法三:
动态生成where子句。比较麻烦。不说了。
没有QQ,GG.
 
接受答案了.
 
我很感谢你对我的回答,但是这个方法不行,因为我以前也试过的,只有日期的参数可以传递,其他的不行。
 
你是说哪一个?
 
1. where b.cbzxbh=a.jgbh and a.rq>:d1 and a.rq<:d2
在后面加 and b.cbzxbh=:cb ;
parambyname('cb').asstring := edit5.text;

 
后退
顶部