有个生产管理系统装上在执行一个查询的时候弹出这样的错误:
---------------------------
Warning
---------------------------
Unable to Execute SQL:
select ryb.gh ryid,ryb.xm,jiagong_v.gxmc,
sum(jiagong_v.sl/(len(jiagong_v.ryid+','+isnull(qtryid,'')+',')/4)) sl,
count(*) pc_CNT,
sum(fps/(len(jiagong_v.ryid+','+isnull(qtryid,'')+',')/4)) FPS,
sum(jiagong_v.hgs/(len(jiagong_v.ryid+','+isnull(qtryid,'')+',')/4)) hgs,
cast(100.00*sum(jiagong_v.hgs)/sum(jiagong_v.sl) as decimal(7,2)) hgl,
cast(sum(jiagong_v.hgs/gongxu.mzs/(len(jiagong_v.ryid+','+isnull(qtryid,'')+',')/4)) as decimal(9,2)) sl_m,
cast(sum(jiagong_v.hgs/gongxu.mzs/(len(jiagong_v.ryid+','+isnull(qtryid,'')+',')/4))/gongxu.dlxs as decimal(9,2)) sl_dl
from jiagong jiagong_v ,fenpi_v,gxmc gongxu ,ryb
where jiagong_v.xpc=fenpi_v.xpc
and fenpi_v.dpc=gongxu.dpc and jiagong_v.gxid=gongxu.id
and wcrq between :qsrq and :zzrq
and (jiagong_v.ryid=ryb.gh or dbo.instr(qtryid,ryb.gh)>0)
And
(Upper(JIAGONG.gxmc) like '粘片(D/B)%')
group by ryb.gh,ryb.xm,jiagong_v.gxmc,gongxu.mzs,gongxu.dlxs
order by jiagong_v.gxmc ---------------------------
OK
---------------------------我检查过,SQL语句是对的,那就可以是代码写错了,请求各位指点,怎么修改,留下QQ,我加你~~请指教!
---------------------------
Warning
---------------------------
Unable to Execute SQL:
select ryb.gh ryid,ryb.xm,jiagong_v.gxmc,
sum(jiagong_v.sl/(len(jiagong_v.ryid+','+isnull(qtryid,'')+',')/4)) sl,
count(*) pc_CNT,
sum(fps/(len(jiagong_v.ryid+','+isnull(qtryid,'')+',')/4)) FPS,
sum(jiagong_v.hgs/(len(jiagong_v.ryid+','+isnull(qtryid,'')+',')/4)) hgs,
cast(100.00*sum(jiagong_v.hgs)/sum(jiagong_v.sl) as decimal(7,2)) hgl,
cast(sum(jiagong_v.hgs/gongxu.mzs/(len(jiagong_v.ryid+','+isnull(qtryid,'')+',')/4)) as decimal(9,2)) sl_m,
cast(sum(jiagong_v.hgs/gongxu.mzs/(len(jiagong_v.ryid+','+isnull(qtryid,'')+',')/4))/gongxu.dlxs as decimal(9,2)) sl_dl
from jiagong jiagong_v ,fenpi_v,gxmc gongxu ,ryb
where jiagong_v.xpc=fenpi_v.xpc
and fenpi_v.dpc=gongxu.dpc and jiagong_v.gxid=gongxu.id
and wcrq between :qsrq and :zzrq
and (jiagong_v.ryid=ryb.gh or dbo.instr(qtryid,ryb.gh)>0)
And
(Upper(JIAGONG.gxmc) like '粘片(D/B)%')
group by ryb.gh,ryb.xm,jiagong_v.gxmc,gongxu.mzs,gongxu.dlxs
order by jiagong_v.gxmc ---------------------------
OK
---------------------------我检查过,SQL语句是对的,那就可以是代码写错了,请求各位指点,怎么修改,留下QQ,我加你~~请指教!
getsql
再showmessage分析就一清而楚啦
2、如果在SQLServer里面执行是正确的,那么在Delphi中直接执行肯定是无法执行的,那么多的单引号都要转换才可以,就这么简单。所有单引号的地方都换成 QuotedStr('内容')
'sum(jiagong_v.sl/(len(jiagong_v.ryid+'',''+isnull(qtryid,'''')+'','')/4)) sl,'+
'count(*) pc_CNT,'+
'sum(fps/(len(jiagong_v.ryid+'',''+isnull(qtryid,'''')+'','')/4)) FPS,'+
'sum(jiagong_v.hgs/(len(jiagong_v.ryid+'',''+isnull(qtryid,'''')+'','')/4)) hgs,'+
'cast(100.00*sum(jiagong_v.hgs)/sum(jiagong_v.sl) as decimal(7,2)) hgl,'+
'cast(sum(jiagong_v.hgs/gongxu.mzs/(len(jiagong_v.ryid+'',''+isnull(qtryid,'''')+'','')/4)) as decimal(9,2)) sl_m,'+
'cast(sum(jiagong_v.hgs/gongxu.mzs/(len(jiagong_v.ryid+'',''+isnull(qtryid,'''')+'','')/4))/gongxu.dlxs as decimal(9,2)) sl_dl '+
' from jiagong jiagong_v ,fenpi_v,gxmc gongxu ,ryb '+
' where jiagong_v.xpc=fenpi_v.xpc '+
' and fenpi_v.dpc=gongxu.dpc and jiagong_v.gxid=gongxu.id '+
' and wcrq between :qsrq and :zzrq '+
' and (jiagong_v.ryid=ryb.gh or dbo.instr(qtryid,ryb.gh)>0) '+
' And (Upper(JIAGONG.gxmc) like ''Öߤù(D/B)%'') '+
' group by ryb.gh,ryb.xm,jiagong_v.gxmc,gongxu.mzs,gongxu.dlxs '+
' order by jiagong_v.gxmc ';