我现在并不是符号的问题而是查询的问题
select intType,iif(intType=1,"大","小") as iT from TB执行上面查询之后adoquery1.edit;
adoquery1.fieldbyname('intType').value:=1;
adoquery1.post;这样就出错
老提示"标准表达式中数据类型不匹配",adoquery1.fieldbyname('intType').as____:=1; <<<as所有类型的都不行头都大了,弄了一天一夜

解决方案 »

  1.   

    (1)select intType from TB
    (2)adoquery1增加一个计算字段iT
      

  2.   

     我上面那样做没错呀,只是access数据规范让人头痛,在sql里更是正确的
      

  3.   

    (3)adoquery1的OnCalcFields事件
    if adoquery1intType.Value='1' then 
      adoquery1IT.Value:='大' 
    else 
      adoquery1IT.Value:='小;
      

  4.   

    什么叫access数据规范,你现在是在DELPHI里面实现,什么又是"在sql里更是更是正",你在sql里只是显示数据
      

  5.   

    就是我将该程序在SQL数据库里做是正确的,在Access数据库里就出错
      

  6.   

    我是想在DBGrid里显示如果intType是1的话显示“大”,是2的话显示“小”,
    但实际并不是改变数据库的值。直到在需要编辑时再修改,修改只用代号1,2表示
      

  7.   

    sql语句是没有错误的,是不是你的DBGrid控件里的字段列表中的某个字段类型有问题
      

  8.   

    沒有,如果不去修改的話,查詢什麼都沒問題
    就是在adoquery1.fieldbyname('intType').value:=1; 時出錯
      

  9.   

    我觉得这样的可能性最大.当你下了一个EDIT去修改记录,在别处下了一个POST作保存,但你自已还是以为是修改状态,你再次下一个POST时就会出错
      

  10.   

    很奇怪,將Adoquery1.CursorLoction設為clUseServer就可以了,不知道是什麼原理