SQL语句在sqlserver测试没问题,加到ADOQuery1.SQL.add方法后就不行了
UPDATE   KCSP   SET   KCSP.A13=SPJGB.A4   FROM   KCSP,SPJGB   WHERE   SPJGB.A1=KCSP.A1+'-'+KCSP.A6 ADOQuery1.SQL.Add('UPDATE   KCSP   SET   KCSP.A13=SPJGB.A4   FROM   KCSP,SPJGB   WHERE   SPJGB.A1=KCSP.A1+'-'+KCSP.A6 ');
报错:
[Error] ModifyWithGYH_Unit.pas(55): Operator not applicable to this operand type应该是'-'这里有问题,但是确实需要这个。

解决方案 »

  1.   


    这样就可以了
    ADOQuery1.SQL.Add('UPDATE KCSP SET KCSP.A13=SPJGB.A4 FROM KCSP,SPJGB WHERE SPJGB.A1=KCSP.A1-KCSP.A6'); 
      

  2.   

    ADOQuery1.SQL.Add('UPDATE KCSP SET A13=B.A4 FROM KCSP A,SPJGB B WHERE B.A1=A.A1-A1.A6');
      

  3.   

    ADOQuery1.SQL.Clear;
    ADUQuery1.SQL.ADD('UPDATE KCSP SET KCSP.A13=SPJGB.A4 FROM KCSP,SPJGB WHERE SPJGB.A1=KCSP.A1 + ''-'' + KCSP.A6');
      

  4.   

    ADUQuery1.SQL.ADD('UPDATE KCSP SET KCSP.A13=SPJGB.A4 FROM KCSP,SPJGB WHERE SPJGB.A1=KCSP.A1 + ''-'' + KCSP.A6');
      

  5.   

    ADOQuery1.SQL.Add('UPDATE KCSP  SET KCSP.A13=SPJGB.A4  FROM  KCSP,SPJGB  WHERE SPJGB.A1=KCSP.A1'''+'-'+'''KCSP.A6'); 
      

  6.   

    Adoquery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.ADD('UPDATE KCSP SET KCSP.A13=SPJGB.A4 FROM KCSP,SPJGB WHERE SPJGB.A1=KCSP.A1 + ''-'' + KCSP.A6');
    ADOQuery1.execSql;
    ADOQuery1.close;
      

  7.   

     ADOQuery1.SQL.Add('UPDATE KCSP SET KCSP.A13=SPJGB.A4 FROM KCSP,SPJGB WHERE SPJGB.A1=KCSP.A1-KCSP.A6');
      

  8.   

    有遇到過,有些復雜的指令寫成SP運行OK
    但直接放入ADOQUERY裡卻引發錯誤,呵呵
      

  9.   

    其实这里面的问题现在,SQL的字符串常量描述符(“'”,就称之为描述符吧)当中,正好与Delphi相冲突,这也是最让Delphi程序员头疼的事情,一不小就会弄错。其实在sql 2005之前,是支持双引号来替代单引号的(估计也是为了“照顾”部分程序员吧^_^),但是在sql 2005当中却不被支持。比较常见的写时是在Delphi当中写双引号,以防止出错,然后在执行之前对如ADOQuery.SQL.Text做一次双引号(")替换为单引号(')的动作,无可质疑,这减少了错误,却也降低了效率,但是在很多时候我们写出来的程序都不是太追求那么一点点效率而去让它不重地产生错误。上面的答案当中3楼是对的,6楼是支持的(SQL2005会报一个错误提示)。
      

  10.   

    正确的写法应该是
    ADOQuery1.SQL.Add('UPDATE KCSP SET CSP.A13=SPJGB.A4 FROM KCSP,SPJGB WHERE SPJGB.A1=KCSP.A1 + ''-'' + KCSP.A6'); 
      

  11.   

    有些(通常是復雜些的)SQL指令在DELPHI裡是會出錯誤,權當是BUG吧
    建議寫在SP裡調用
      

  12.   


    ADOQuery1.SQL.Add('UPDATE KCSP SET KCSP.A13=SPJGB.A4 FROM KCSP,SPJGB WHERE SPJGB.A1=KCSP.A1-KCSP.A6');