str := select jc_ccpck.bill,jc_ccp.mc,jc_ccp.gg,jc_ccpckxx.sl,'+
'case jc_ccp.gg when ''优级'' then jc_ccpckxx.sl else 0 end as my,'+
'case jc_ccp.gg when ''一级'' then jc_ccpckxx.sl else 0 end as m1,'+
'case jc_ccp.gg when ''合格'' then jc_ccpckxx.sl else 0 end as mh,'+
'case jc_ccp.gg when ''次品'' then jc_ccpckxx.sl else 0 end as mc,'+
'case jc_ccpck.lb when ''礼品'' then jc_ccpckxx.sl else 0 end as ml,'+
'jc_ccpck.cksj from jc_产成品出库详细 jc_ccpckxx,jc_产成品出库 jc_ccpck,jc_产成品 jc_ccp where jc_ccpck.bill=jc_ccpckxx.bill and jc_ccpckxx.bh=jc_ccp.bh and jc_ccp.mc = ''绵白糖''';
iniQuery(str,Query1);//让Query执行这条SQL语句
编译没有错误,运行时就会出现一个窗体,
标题为:CPU
第二行为:Thrcad#3056
剩下的,根本看不懂是什么东西,我感觉是16进制的数(但是,不能确定)如果,将语句改为:
str := select jc_ccpck.bill,jc_ccp.mc,jc_ccp.gg,jc_ccpckxx.sl,'+
'case jc_ccp.gg when ''优级'' then jc_ccpckxx.sl else 0 end as my,'+
'case jc_ccp.gg when ''一级'' then jc_ccpckxx.sl else 0 end as m1,'+
'jc_ccpck.cksj from jc_产成品出库详细 jc_ccpckxx,jc_产成品出库 jc_ccpck,jc_产成品 jc_ccp where jc_ccpck.bill=jc_ccpckxx.bill and jc_ccpckxx.bh=jc_ccp.bh and jc_ccp.mc = ''绵白糖''';
iniQuery(str,Query1);//让Query执行这条SQL语句
运行时一点错误也没有,我不知道问题的原因出在哪里了!
自我感觉问题:
1,语句太长,解决方法,将表别名缩短为一个字符,出现的结果和上述一样;
2,直接将语句写到Query.Sql.Add('')中一行一行添加,出现的结果和上述一样;
3,直接将SQL语句写到,Query控件SQL属性中,出现的结果和上述一样。请问到底出了什么问题啊,谢谢各位了!
'case jc_ccp.gg when ''优级'' then jc_ccpckxx.sl else 0 end as my,'+
'case jc_ccp.gg when ''一级'' then jc_ccpckxx.sl else 0 end as m1,'+
'case jc_ccp.gg when ''合格'' then jc_ccpckxx.sl else 0 end as mh,'+
'case jc_ccp.gg when ''次品'' then jc_ccpckxx.sl else 0 end as mc,'+
'case jc_ccpck.lb when ''礼品'' then jc_ccpckxx.sl else 0 end as ml,'+
'jc_ccpck.cksj from jc_产成品出库详细 jc_ccpckxx,jc_产成品出库 jc_ccpck,jc_产成品 jc_ccp where jc_ccpck.bill=jc_ccpckxx.bill and jc_ccpckxx.bh=jc_ccp.bh and jc_ccp.mc = ''绵白糖''';
iniQuery(str,Query1);//让Query执行这条SQL语句
编译没有错误,运行时就会出现一个窗体,
标题为:CPU
第二行为:Thrcad#3056
剩下的,根本看不懂是什么东西,我感觉是16进制的数(但是,不能确定)如果,将语句改为:
str := select jc_ccpck.bill,jc_ccp.mc,jc_ccp.gg,jc_ccpckxx.sl,'+
'case jc_ccp.gg when ''优级'' then jc_ccpckxx.sl else 0 end as my,'+
'case jc_ccp.gg when ''一级'' then jc_ccpckxx.sl else 0 end as m1,'+
'jc_ccpck.cksj from jc_产成品出库详细 jc_ccpckxx,jc_产成品出库 jc_ccpck,jc_产成品 jc_ccp where jc_ccpck.bill=jc_ccpckxx.bill and jc_ccpckxx.bh=jc_ccp.bh and jc_ccp.mc = ''绵白糖''';
iniQuery(str,Query1);//让Query执行这条SQL语句
运行时一点错误也没有,我不知道问题的原因出在哪里了!
自我感觉问题:
1,语句太长,解决方法,将表别名缩短为一个字符,出现的结果和上述一样;
2,直接将语句写到Query.Sql.Add('')中一行一行添加,出现的结果和上述一样;
3,直接将SQL语句写到,Query控件SQL属性中,出现的结果和上述一样。请问到底出了什么问题啊,谢谢各位了!
str := select jc_ccpck.bill,jc_ccp.mc,jc_ccp.gg,jc_ccpckxx.sl,'+
//这边是打错的么?
要不改用 inner join 的方式看下,
左连接和右连接都试过来了,还是一样的结果啊!
str := select jc_ccpck.bill,jc_ccp.mc,jc_ccp.gg,jc_ccpckxx.sl,'+str:=' ......'
str := select jc_ccpck.bill,jc_ccp.mc,jc_ccp.gg,jc_ccpckxx.sl,'
显然这句是不对的
str:='..
哦,哦,是我在这里写错了,程序里不是这样的!
str := 'select jc_ccpck.bill,jc_ccp.mc,jc_ccp.gg,jc_ccpckxx.sl,'
不好意思啊!
我这种方法我用过了,结果还是一样的!
var
Str: string;
begin
str := 'select jc_ccpck.bill, jc_ccp.mc, jc_ccp.gg, jc_ccpckxx.sl, '+
'case jc_ccp.gg when ''优级'' then jc_ccpckxx.sl else 0 end as my,' +
'case jc_ccp.gg when ''一级'' then jc_ccpckxx.sl else 0 end as m1,' +
'case jc_ccp.gg when ''合格'' then jc_ccpckxx.sl else 0 end as mh,' +
'case jc_ccp.gg when ''次品'' then jc_ccpckxx.sl else 0 end as mc,' +
'case jc_ccpck.lb when ''礼品'' then jc_ccpckxx.sl else 0 end as ml,' +
'jc_ccpck.cksj from jc_产成品出库详细 jc_ccpckxx,jc_产成品出库 jc_ccpck,jc_产成品 jc_ccp where jc_ccpck.bill=jc_ccpckxx.bill and jc_ccpckxx.bh=jc_ccp.bh and jc_ccp.mc = ''绵白糖'''; { str := 'select jc_ccpck.bill,jc_ccp.mc,jc_ccp.gg,jc_ccpckxx.sl,' +
// 'case jc_ccp.gg when ''优级'' then jc_ccpckxx.sl else 0 end as my,' +
//'case jc_ccp.gg when ''一级'' then jc_ccpckxx.sl else 0 end as m1,' +
'jc_ccpck.cksj from jc_产成品出库详细 jc_ccpckxx,jc_产成品出库 jc_ccpck,jc_产成品 jc_ccp where jc_ccpck.bill=jc_ccpckxx.bill and jc_ccpckxx.bh=jc_ccp.bh and jc_ccp.mc = ''绵白糖''';
}
adoQuery1.SQL.Clear;
ADOQuery1.SQL.Add(str);
ADOQuery1.Open;
end;
在sqlserver 2000个人版下验证通过的,两句话全都可以正确执行
没有,没有,其他程序都好使!
logne()
恩,在oracle里执行也都可以通过
procedure iniQuery(str:string;Q:TADOQuery);
begin
With Q do
begin
CLose;
SQL.Clear;
SQL.Add(str);
Open;
end;
end;我简单的写了一个,执行两句没问题
执行其他SQL语句也没有问题!