数据是从存储过程来的.其中用到sum
我只想在前台改一改数据,不用提交到后台,所以设为缓存更新,到时候再取消掉.
因为用到sum,所以出来的字段全是只读,那我用代码全部改为可写fileds[i].readonly:=False
问题是:
    我更改数据集中的某条记录,POST,没有报错. 但是,POST之后数据又变成了更改之前的数据了.
    为什么会这样,怎么解决这个问题.

解决方案 »

  1.   

    检查一下Post之后是否重新取了数据
      

  2.   

    没有,因为有不是sum出来的字段可以改,但如果是sum出来的字段就会出现上面的问题。
      

  3.   

    你將數據緩衝到 ClientDataset 如何??在裹面操作應該可以修改, 又可控制不立即更新到數據庫
      

  4.   

    直覺覺得你的
    >>我更改数据集中的某条记录,POST,没有报错. 但是,POST之后数据又变成了更改之前的数据了.
    會有問題, 但一時想不是很清楚
      

  5.   

    我测了,在最简单的情况下,一句代码也不写,是同样的问题.
    ---------------------------------------------------------
    放一个AdoDataSet.
    设计期:改ConnectString / CommandText / Add Fields /把所有Field.ReadOnly:=false / Acive:=true 运行.
      

  6.   

    你POST到哪儿去了?用SQLMonitor跟一下就知道了;还有一个可能:你用了DATASNAP,POST的数据在本地,应该在DataSet.Delta里,要ApplyUpdates后才发送给数据库;
      

  7.   

    何必如此麻烦,加一个ClientDataSet就能解决了,有时候你和这样的问题搏斗往往没有结果的。
    前段时间我用Oracle公司提供的驱动和MS提供的去冬来连接Oracle,不同驱动遇到不同的许多问题。
    哎。
      

  8.   

    你POST到哪儿去了?用SQLMonitor跟一下就知道了;还有一个可能:你用了DATASNAP,POST的数据在本地,应该在DataSet.Delta里,要ApplyUpdates后才发送给数据库;
    ------------------------------------
    完全没有看懂人家的问题。
      

  9.   

    xiaocuo_zrf(女巫手上的猫) 
        谢谢哈,贴子放到明天吧,明天没人会,我就改用你的方法.
      

  10.   

    哈哈,是我没看清楚..用ClientDataSet吧~
      

  11.   

    用ClientDataSet不是很好,客户端有时需要注册midas.dll。还是用数据库临时表,用Select Into #Temp From T1 Where ....很简单。而且需要批量提交的时候只需在存储过程中利用游标进行批量更新。能解决很多数据同步操作的问题。在项目中用的非常成功。
      

  12.   

    同意回复人: readersm68(地主) 的观点
      

  13.   

    同意readersm68(地主) 的观点
      

  14.   

    readersm68(地主) :
        谢谢.
        但想问问引起上述问题的原因是什么?
      

  15.   

    ClientDataSet 相当于一临时表修改它的记录
    数据库里的记录并没有变,如果你要还是从数据库里提取记录,那记录就还是以前的
      

  16.   

    TO zoujinhe(易名烦):我想Post并没有更改基表,你只是更改了查询后的结果集,更新后存储过程从没有更改的基表中汇总的数据当然是不变的。
      处理数据最好与汇总查询分开。
      

  17.   

    readersm68(地主):
        首先说声抱歉,这么久才上来看这个问题!
        我的想法就是不改基表,只是改结果集中的数据(前台显示而已,并不更新后台).
      

  18.   

    不用ClientDataSet也可以的,用BatchUpdate模式也不错,可参看李维写的那本ADO的书
      

  19.   

    不想用ClientDataSet,那就建一个本地临时库嘛……
      

  20.   

    现在的问题是为什么那些Sum出来的字段在前台都不能改。
      

  21.   

    SUM出来的字段当然在前台不能改啦! 更改数据表是按键值然后比较修改前后的数据,没有改变就不会引起修改.你SUM一个字段,并没有改变基表中该字段的任何值,所以不能修改.
      

  22.   

    归根结底,是ADO的Field的两个动态属性ColumnName和TableName为空,(实际为空,但到底是不是这个原因不知到)。但手动改不了。