源语句如下:
                 qry1.SQL.Clear;
                 qry1.Close;
                 str:='INSERT INTO OpenDataSource(''Microsoft.Jet.OLEDB.4.0'',''Data Source="C:\Documents and Settings\Administrator\桌面\adzt_1_2003.oxt";User ID=Admin;Password='')';
                 str:=str+'...code(ccode,ccode_name,igrade,cclass,cbook_type,cmeasure,cexch_name,bcus,bsup)select ccode,ccode_name,igrade,cclass,';
                 str:=str+'(CASE WHEN tofmoney = 1 AND toqty = 1 THEN ''数量外币式'' ELSE (CASE WHEN tofmoney = 1 THEN ''外币金额式'' ELSE (CASE WHEN toqty = 1 THEN ''数量金额式'' ELSE ''金额式'' END) END) END) ';
                 str:=str+'AS cbook_type,cmeasure,cexch_name,bcus,bsup from AA';
             qry1.SQL.Add(str);
             qry1.ExecSQL;
请问高手 这样的语句应该怎么写。我这样写错误出现在什么地方!如何调试delphi程序呀  着急啊  各位高手!

解决方案 »

  1.   

    拜托,你把这条语句里的SQL提出来,先放到SQL SERVER的查询分析器里执行下看看错误是什么啊
      

  2.   


    在sql 里面没什么错误的  可以执行的  结果也出来啦  就是在程序中执行 就出错
      

  3.   

    qry1.SQL.Clear;
                     qry1.Close;
                     str:='INSERT INTO OpenDataSource(''Microsoft.Jet.OLEDB.4.0'',''Data Source="C:\Documents and Settings\Administrator\桌面\adzt_1_2003.oxt";User ID=Admin;Password='')';
                     str:=str+'...code(ccode,ccode_name,igrade,cclass,cbook_type,cmeasure,cexch_name,bcus,bsup)select ccode,ccode_name,igrade,cclass,';
    接下来的case when 换为 iff(条件,结果1,结果2)---含义为如果条件成立则为 结果1,否则为结果2.就这样简单。这样的问题我也见过了 。
      

  4.   

    access不支持case when语句
    case when 换为 iff(条件,结果1,结果2)---含义为如果条件成立则为 结果1,否则为结果2.就这样简单。
      

  5.   

    建议楼主,在delphi中用inspect查看合并后str的值,然后copy出来,在查询分析器下运行,检查。str:='INSERT INTO OpenDataSource(''Microsoft.Jet.OLEDB.4.0'',''Data Source="C:\Documents and Settings\Administrator\桌面\adzt_1_2003.oxt";User ID=Admin;Password='')';//这个位置是不是少了对单引号。应该是Password=''''吧。
                     
    str:=str+'...code(ccode,ccode_name,igrade,cclass,cbook_type,cmeasure,cexch_name,bcus,bsup)select ccode,ccode_name,igrade,cclass,';