目的是不希望把用户的选择保存到数据库中,只是临时使用。搜索了许多,大致方法是:
1、Query增加自动计算字段,bool类型。
2、DBGird增加选择列,设置checkBoxes属性,使用上面的自动计算字段。
3、DBGrid的CellClick事件中,写代码(bcb例子)类似:
    if(Column->FieldName == "选择") {
        if(QueryBrow->State != dsEdit) QueryBrow->Edit();
        QueryBrowField->Value = !QueryBrowField->Value; //或者下面
        Column->Field->AsBoolean = !Column->Field->AsBoolean;
    }据说就可以了,但是执行的时候Query不允许进入编辑状态。把Query的RequestLive属性=true,运行就提示 table is readonly.
有人说用table不用Query可以,但是我那个Query是继承的有众多联系,不可能用其他的,只有table能用应用范围也太小了。
还有人说ADOQuery可以,但是如果是多表查询结果也肯定不行。大家怎么解决的?

解决方案 »

  1.   

    DBGird增加选择列,设置checkBoxes属性,使用上面的自动计算字段。
    这个不行吗,我记得之前我是这样子的,不过我加了memtabeh和datasetdriver
      

  2.   

    操作 DBGird.dataset:
     添加选择的字段。
      

  3.   

    用clientdataset,query+datasetprovider+clientdataset数据不回写即可
      

  4.   


    把Query的RequestLive属性=true,运行就提示 table is readonly. 
     你應該是在BDE下啊。
    不管是在BDE或ADO下,可以做一個偽提交,把緩存更新打開來臨時使用。BDE 下應該是  cachedUpdate   設為 TRUEADO 下  locktype 設為 ltBatchOptimistic
      

  5.   

    BDE 下應該是  cachedUpdate  設為 TRUE ADO 下  locktype 設為 ltBatchOptimistic
      

  6.   

    BDE的是吧,将TQuery.CachedUpdates := True;
    RequestLive := False;
    在SQL里增加多一个虚的字段
    select 0 as Selected from table