如何刷新TClientDataSet中的数据?

y_s_y 2003-08-20 07:16:31
我在一个项目中创建了两个页和一个DataModule。A页包括一个DataGrid,他的DataSouce指向DataModule中的TDatasource,而TDatasource的dataset指向一个TClientDataSet。A页的OnCreat方法使A页一打开,就显示表C的记录。B页执行向表C插入记录,可我发现,每次用B页执行完插入记录后,再打开A页,不能显示出新记录,只能显示旧记录。重新执行项目,打开A页,则可以显示。
请问何故?在线。
...全文
138 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
空中居士 2003-08-29
  • 打赏
  • 举报
回复
闹不清你做的是不是多层结构
自己提问题时表达清楚,才能得到更好的帮助。

B页执行向表C插入记录后,如是多层结构除调用post方法外,还需调用applyUpdates方法上传到服务器
再打开A页,应该在A页的active 事件重新执行一遍查询,才能显示出新记录,同OnCreate中的一样。
OnCreate 方法只在对话框初始化的时候,调用一次。
linda1972 2003-08-25
  • 打赏
  • 举报
回复
在 pagecontrol.onchange 事件中调用 onshow 事件
hiflower 2003-08-25
  • 打赏
  • 举报
回复
可对于Select.....from ...,并不需要ApplyUpdate啊!也就是说,我没有任何插入动作,再次打开查询对话框,未执行任何查询动作,就已经显示了旧信息。按理说,再次打开,应该是等我执行一个点击查询的按钮后才显示结果啊?
=====================

如果这样,在 OnClose 时,执行 ClientDataSet1.Close;
paliang 2003-08-25
  • 打赏
  • 举报
回复
我的都是copy oncreate 到 onshow的

3层中表现层也要有ADOQuery的阿,你做几层的?
y_s_y 2003-08-24
  • 打赏
  • 举报
回复
”copy oncreate 到 onshow“ ,不行啊!

没有“if dm.adoquery.false then ....=true;”并且,ADOQuery在Server端,在客户端如何直接操作它?

“applyUpdates"只有在Edit或插入状态才能用,对于查询并不需要啊!

paliang 2003-08-24
  • 打赏
  • 举报
回复
copy oncreate 到 onshow ,还有 如果有,if dm.adoquery.false then ....=true;
这句不要,这样,每次打开A的时候应该是正常的了
有没有applyUpdates ,好像没有上面问题
y_s_y 2003-08-24
  • 打赏
  • 举报
回复
可对于Select.....from ...,并不需要ApplyUpdate啊!也就是说,我没有任何插入动作,再次打开查询对话框,未执行任何查询动作,就已经显示了旧信息。按理说,再次打开,应该是等我执行一个点击查询的按钮后才显示结果啊?
y_s_y 2003-08-21
  • 打赏
  • 举报
回复
我是先Close,再设置CommandText,再Open的呀。
fangzhouyu 2003-08-21
  • 打赏
  • 举报
回复
你应该在用过ClientdataSet.CommandText打开数据库之前,先把ClientdataSet关闭再打开,不然它认的是以前的ClientdataSet.CommandText的意思,不会改变,关闭再打开,才会重新打开数据库
hiflower 2003-08-21
  • 打赏
  • 举报
回复
1. B 页执行插入后,有没有进行 ApplyUpdates?
2. A 页的 OnCreate 可能只进行了一次。你可以看看它的 OnDestroy 事件执行了几次,如果没有进行 Destroy,则第二次 Show 时,不会 Create 的。如果是这样,在 OnShow 事件中写 ClientDataSet1.Close;ClientDataSet1.Open。
y_s_y 2003-08-21
  • 打赏
  • 举报
回复
clinetdataset1.refresh我也用了。
杨小杨 2003-08-21
  • 打赏
  • 举报
回复
先CLOSE。再OPEN。

clinetdataset1.refresh可是刷新!
y_s_y 2003-08-20
  • 打赏
  • 举报
回复
对不起,是我没表达清楚。是对话框。
我是在OnCreat中通过ClientdataSet.CommandText打开数据库的,按说对话框每次创建时都应该执行一次,可实际不行。
jpyc 2003-08-20
  • 打赏
  • 举报
回复
tabsheet?

在切换页面时,更新一下数据,如ONSHOW事件中

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧