在三层结构中,当你在服务端的adoquery的sql属性里面写上像下面的语句:
select aa,bb,aa*bb As cc from table1看到aa*bb As cc吗? 这里就是问题的地方,当用sql动态生成一个列,在客户端就不能使用删除功能,既clientdataset.delete ,准确来说应该是它看起来好象是删除了,但其实并没有提交。delphi好象处理不了这种动态生成的列,不知道是功能限制还是bug?

解决方案 »

  1.   

    clientdataset.delete 这个动作只是在CLIENTDATASET里面记录一条删除记录。
    ClientDataSet的插入修改删除操作,都要最终用APPLYUPDATES提交
      

  2.   

    还需要你自己写提交语句clientdataset.ApplyUpdates;
      

  3.   

    这个我当然知道,我并没有忘记applyupdates
      

  4.   

    adoquery 的查询结果可能来源自多个表
    删除一条记录时,究竟是删除哪一个表或者是多个表
    因此,dephi 不做处理是聪明的,还是让程序员编程处理
      

  5.   

    如果sql是來源一個資料表,是沒有問題的,我曾經寫過
    adoquery應該有個屬性要修改一下
    不過你aa*bb之類的沒有試過,你可以測試一下
      

  6.   

    foreveryday007(foreveryday007) :
    如果来源两个表呢?
      

  7.   

    你可以自己想想,如果你的直接能更新回去的话,会有什么结果,那不是原来的数据表好端端增加了一个字段?对于这样的数据,在你调用applyupdates()的时候,一定要自己先处理,把多余的信息过滤,这个问题就相当夺标更新的问题!
      

  8.   

    不晓得.SQL中的计算列是有些限制的。