我用delphi编程,用sql语句处理access表中一个字段,对其值进行整理,用了三个iif语句,就报错,如果一个或者两两组合都可以正确运行,请问这是为什么?那句sql语句是 execute('UPDATE jzpz set pzrq=(iif(cdbl(left(trim(pzrq),2))<10," "+cstr(cdbl(left(trim(pzrq),2))),cstr(cdbl(left(trim(pzrq),2)))))+
iif(cdbl(mid(pzrq,3,2))<10," "+cstr(cdbl(mid(pzrq,3,2))),cstr(cdbl(mid(pzrq,3,2))))+
(iif(len(trim(pzrq))<6," "+right(trim(pzrq),1),right(trim(pzrq),2)))');
还有就是,这个语句在access中是完全能够通过的,为什么在delphi中就通不过呢

解决方案 »

  1.   

    语句过于复杂,可以用showmessage(SQL)检查
      

  2.   

    注意access环境中引号在delphi中不能直接使用,如果报错,要看看什么错误信息
      

  3.   

    问题的关键已经找到,原来是这个语句太长,超过了255个字符,换了下面的书写方式就通过了
    sql6:='UPDATE jzpz set pzrq=iif(cdbl(left(trim(pzrq),2))<10," "+cstr(cdbl(left(trim(pzrq),2))),'+
       'cstr(cdbl(left(trim(pzrq),2))))+iif(cdbl(mid(pzrq,3,2))<10," "+cstr(cdbl(mid(pzrq,3,2))),'+
       'cstr(cdbl(mid(pzrq,3,2))))+(iif(len(trim(pzrq))<6," "+right(trim(pzrq),1),right(trim(pzrq),2)))';
    execute(SQL6);
    问题的关键就是换行,解决每行字符号不超过255就可以了,谢谢大家哈!来源: http://www.programbbs.com/bbs/view12-29186-1.htm