我在ADOQUERY中代码如下:
select cast(0 as bit) as selected,* from ITEM
我虚拟一个selected字段,并在ADOQUERY的LOCKTYPE中设置成ITBATCHOPTIMISTIC属性
我在DBGRID中需要在selected上打勾表示选择了哪几列,但并不保存现在碰到DBGRID中selected打勾打不上去,DBGRID的状态为不可编辑,请问还需要在哪里设置?

解决方案 »

  1.   

      ADOQuery1.CursorLocation := clUseClient;//只有客户端游标才能批量更新
      ADOQuery1.LockType := ltBatchOptimistic;//设置为批量更新模式
      .......
      ADOQuery1.UpdateBatch();//操作完成后,在更新到数据库
      

  2.   

    是啊,我是不需要修改,我只是在需要的数据上面打勾,ADOQUERY循环判断一下而已
      

  3.   

    [Quote=引用 2 楼 blazingfire 的回复:]
      ADOQuery1.CursorLocation := clUseClient;//只有客户端游标才能批量更新 
      ADOQuery1.LockType := ltBatchOptimistic;//设置为批量更新模式 
      ....... 
    根据这个设置还是不能进行编辑啊?
      

  4.   

    我以前写的一个例子,要clientdataset,datasetprovider配合adoquery使用sqltext:='SELECT 0 as nfcp_check ... from ...';downloadfrm_query.SQL.Text:=sqltext;
    downloadfrm_query.Open;
    downloadfrm_query.FieldByName('nfcp_check').ReadOnly:=false;dfrm_clientdataset.Open;
    dfrm_clientdataset.FieldByName('nfcp_check').ReadOnly:=false;
      

  5.   

    DBGRID是感知控件,虚拟的列应该是不能操作的