修改数据集的问题 ( 积分: 50 )

  • 主题发起人 主题发起人 风云轻淡
  • 开始时间 开始时间

风云轻淡

Unregistered / Unconfirmed
GUEST, unregistred user!
[8D]
使用DbGridEh+ADO显示数据,修改的时候不想刷新整个表格,就直接对ADO中当前修改的数据赋值,运行时在修改数据后表格中的数据确实修改成修改后的内容了,但是点击一下表格内容就恢复成修改前的了,请高手帮忙看下!
 
: 可能我的问题没有描述清楚,我具体说一下:
我只是使用DBGrid来显示数据,修改保存都是直接写语句实现的。

我当前的问题举个例子来说明,原来数据中的季节字段的值是“春”,现在我把它修改成“夏”,但是因为数据量比较大,不想通过刷新整个数据集的方式来刷新,所以想直接修改ADO中的季节字段的值,目前修改后ADO中的值确实修改了,DBGrid中的季节字段也显示的是“夏”,但是只要我一点击表格,DBGrid中的值又恢复成“春”了。
 
用 ADOQuery + DataProvider + ClientDataSet + DataSource 实现,
DataProvider.DataSet := ADoQuery
CliendDataSet.ProviderName := DataProvider
DataSource.DataSet := ClientDataSet

然后AdoQuery.Sql.text := 'select ......'

再ClientDataSet.Open;
如此数据是缓存在CDS中的,无论你怎么改,显示的都是更改后的数据,而且除非你调用CLIENTDATASET.APPLYUPDATE,否则更改的内容不会影响到后台。
 
ADO直接保存就可以了。
ADOQuery1.Post;
ADOQuery1.UpdateBatch(arAll);
 
1、我用的是DBGridEh+DataSource+ADODataSet来实现的。
2、数据库的数据我已经修改了,不用考虑数据保存的问题。
3、我要DBGridEh显示修改过的数据,但是又不想刷新整个数据集。
4、通过对ADODataSet赋值我已经实现了ADO中数据的修改。
5、修改后DBGridEh中显示的值已经是我修改后的内容。

现在的问题是我点击表格的时候显示的内容会恢复成修改前的,也就是说应该是某个控件具有缓存功能,可是我找了很久也没有找到。
 
ADOQuery1.edit.
ADOQuery1.findfiled(''):= '夏'
在滚动后after
写上如果 ADOQuery1 in edit then ADOQuery1.Cancel
 
后退
顶部