query1.Close;
    query1.SQL.Clear;
    query1.SQL.Add('update "bakdxcome.dbf" bakdxcome set bakdxcome.YYSBZ=''AAAA''+bakdxcome.YYSBZ where length(bakdxcome.SKHF)=5');
    query1.ExecSQL;结果在:length(bakdxcome.skhf)=5 处报错!为什么?

解决方案 »

  1.   

    感觉是sql本身的错误
    query1.SQL.Add('update "bakdxcome.dbf" bakdxcome set bakdxcome.YYSBZ=:AAAA +bakdxcome.YYSBZ where length(bakdxcome.SKHF)=5');query1.parambyname('aaaa').asinteger:=bb;//bb is a integer  value
      

  2.   

    老大,你的SQL怎么用的?函数Length是Delphi的,你把它用到SQL语句中,不抱错才怪呢!
    如果你用的是SQL Server,那么我说的以下是正确的,如果用的是Paradox数据库,那么它没有测试字符串长度的函数
    SQL Server的测试字符串长度的函数是Len(),所以你的语句应该改为
    query1.Close;
    query1.SQL.Clear;
    query1.SQL.Add('update "bakdxcome.dbf" bakdxcome set bakdxcome.YYSBZ = ''AAAA''+  bakdxcome.YYSBZ where length (bakdxcome.SKHF)=5');
    query1.ExecSQL;
      

  3.   

    query1.SQL.Add('update "bakdxcome.dbf" bakdxcome set bakdxcome.YYSBZ=''AAAA''+bakdxcome.YYSBZ where '+inttostr(length(bakdxcome.SKHF))+'=5');
      

  4.   

    ''AAAA''+bakdxcome.YYSBZ 
    SQL里的字符连接错了。
      

  5.   

    最好是在程序运行时只是给tquery组件负参数值,在设计时就加入sql语句
      

  6.   

    geliphix(初学者):Invalid use of keyword.Token length(bakdxcome.skhf)=5 line number: 1;JInyk(小小的猪) :你说的这里没有问题,我用其它条件测试过,可以通过。wooden954(wooden) :你说的这个我也考虑过,难道就不能调用delphi的函数了吗?things(平)(♂意难平♀) :你说的方法我试了一上,也不行,你用过这个方法吗?看到请回答! nbforyou(补风捉影) :''AAAA''+bakdxcome.YYSBZ SQL里的字符连接错了。 这个没有错误。 wel():具体一点好吗? 
      

  7.   

    错误实在太多
    1、Length是否是你用的数据库的SQL函数?如果你是VFP格式的DBF数据库那么应该是LEN
    2、SQL语法实在太糟糕query1.SQL.Add('update "bakdxcome.dbf" bakdxcome set bakdxcome.YYSBZ='+QuotedStr('AAAA')+'+bakdxcome.YYSBZ where length(bakdxcome.SKHF)=5');
      

  8.   

    DELPHI中的函数不能在SQL里用的
    你的语句是在SQL里执行的不可能在用DELPHI中的函数,
    它不识别呀!!
    建议你在DELPHI中直接转化过来!!!
      

  9.   

    query1.SQL.Add('update "bakdxcome.dbf" bakdxcome set bakdxcome.YYSBZ='+QuotedStr('AAAA')+'+bakdxcome.YYSBZ where len(bakdxcome.SKHF)=5');返回字符串长度:   ACCESS   DB2   SQL-SERVER ORACLE
    函数:             Len      length    len           length