Adodc1.RecordSource = "select BanHao,iif(Banhao=1,'大','小') as BH from zb"
    Adodc1.Refresh
我执行上面操作之后 想再修改,下面语句是在编辑状态下进行。
     Adodc1.Recordset("BanHao").Value = 2
    Adodc1.Recordset.UpdateBatch
 
出错,提示 "标准表达式中数据类型不匹配", 是不是access里同一个字段只能用一次呢?或者同一个字段多次运行后类型会变呢?不可思议~

解决方案 »

  1.   

    也许是 iif(Banhao=1,'大','小') as BH 这个列在原表中不存在的缘故
      

  2.   

    BanHao是什么类型?
    你改成Adodc1.Recordset("BanHao").Value = '2'试试 
      

  3.   

    BanHao是整型的
    以下都不行
    Adodc1.Recordset("BanHao").Value = '2'
    Adodc1.Recordset("BanHao").AsInteger=2
    Adodc1.Recordset("BanHao").As...
      

  4.   

    Adodc1.RecordSource = "select BanHao,iif(Banhao=1,'大','小') as BH from zb"
    执行后,取回的数据集是数据库中不存在的表,应该是不允许对它进行更新的
      

  5.   

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

  6.   

         Adodc1.Recordset("BanHao").Value = 2 ---这种写法没见过????经过这种方法    Adodc1.RecordSource = "select BanHao,iif(Banhao=1,'大','小') as BH from zb" 
    Adodc1.RecordSource这是不是数据集??
    如果是数据集,iif(Banhao=1,'大','小')这是满足1的条件为大,否则为小。
    重新设2,目的何在,与上面条件iif关联是什么意思???
      

  7.   

    你好,你这样写是错误的.
    根本不正确.  你可以让别人帮助你写好SQL语句.iif 在Access 和其他SQL 语言中不存在.
      

  8.   

    iif在sql server里是没有,但在access里是有的。
      

  9.   


    Adodc1.Recordset("BanHao").Value = 2
    后,你对应的bh设为什么呢?
      

  10.   

    "select BanHao,iif(Banhao=1,'大','小') as BH from zb" 这里修改的是BanHao,而不是BHIIF是在Access中的函数,我原本想用sql的case when then.. ,但access中不支持,所以只能用iif
      

  11.   


    谢谢指教
    IIF是在Access中的函数,我原本想用sql的case when then.. ,但access中不支持,所以只能用iif
    你也应该复习一下access了,
      

  12.   


    我只修改banhao的数据,bh我是且来显示中文的“大”,“小”,只是用来显示
      

  13.   

    症状
    试图修改内容的计算字段内 ActiveX Data Objects (ADO) 记录集, 生成以下错误: 
    运行错误 ' - 2147217887(80040e21) 出错 '。 原因
    ADO 记录集中的每个计算字段包含以下属性: • adFldUnknownUpdatable = False- 和 -  
    • adFldUpdatable = False  
    这表明字段不能被修改。 估计是你Adodc1.Recordset.UpdateBatch 时,系统尝试更新bh导致出错。