有个生产管理系统装上在执行一个查询的时候弹出这样的错误:
---------------------------
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,我加你~~请指教!

解决方案 »

  1.   

    SQL太长了,把它做成一个“存储过程”再来调用就没有问题了。
      

  2.   

    执行后,
    getsql
    再showmessage分析就一清而楚啦
      

  3.   

    1、这段SQL在那里执行是正确的?
    2、如果在SQLServer里面执行是正确的,那么在Delphi中直接执行肯定是无法执行的,那么多的单引号都要转换才可以,就这么简单。所有单引号的地方都换成 QuotedStr('内容')
      

  4.   

    '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   ';