开始的adoquery是单条查询,
后来由于修改为了多表+函数查询,导致报错,遂将locktype设置为ItBatchoptimistic。
但是这样一来,post就不好用了。本人的cxgrid里有一列checkbox,点击变更勾选状态,然后保存到数据库。
本来在cellclick里
AQRYwt.Edit;  if AQRYwt.FieldByName('Isjf').Value = false then
    AQRYwt.FieldByName('Isjf').Value := true
  else
    AQRYwt.FieldByName('Isjf').Value := false;
  AQRYwt.post;locktype设置为ItBatchoptimistic后 post就无法将数据保存到数据库了。求解决方法。

解决方案 »

  1.   

    post只是提交到内存,你需要最好整体执行批量更新
      

  2.   

    @ bdmh 是updatebatch 嘛?
    用这个还是会报itoptimistic下的错。
      

  3.   

    已经很明确了,你那种设置是批更新,要用  你的数据控件.UpdateBatch  
      

  4.   

    @xftyyyyb但是用updatebatch会报itoptimistic下的错。
    我的sql是多表带函数的
      

  5.   

    多表是否能更新,你用同样的查询语句在SQL中测试,如果在数据库本身都不能更新,说明你要重新写SQL语句,这与控件的设置没多大关系,很多时间多表操作都是不可更新的,常见的一种情况是键值无法确定
      

  6.   

    cxGridView还要把Readonly设为FalseAODQUERY设成 itoptimistic确保有主键
      

  7.   

    將ADOQUERY的locktype屬性改為ltBatchOptimistic 
    你保存的時候調用adoquery.updatebatch就可以了