TADODataSet 内容在编辑Post后没有立即被保存到.mdb文件,为何?

jhshen 2005-08-09 03:54:53
通过TADODataSet访问mdb数据库
在对DataSet当前记录修改后,Post,然后copy数据库作为一个存盘文件,
再打开存盘文件时,那条记录还是修改前的。
但是,单步调试的时候是对的,是不是缓存的问题?如何解决?
难道DataSet一定要Close?
...全文
181 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
hqhhh 2005-08-10
  • 打赏
  • 举报
回复
那要听听楼上的有什么高见了!
jhshen 2005-08-10
  • 打赏
  • 举报
回复
不对,
copy是可以成功的,只不过如我所说,有些数据没有更新
zzlazio 2005-08-10
  • 打赏
  • 举报
回复
可以用 Backup作备份,无须关闭任何数据库
hqhhh 2005-08-10
  • 打赏
  • 举报
回复
没有办法,
用copy的方法做备份,不关闭所有数据集,你没有办法备份成功!这是一定的!
除非你另外从新生成一个MDB文件!
luckyboy97 2005-08-10
  • 打赏
  • 举报
回复
ClientDataSet1.ApplyUpdates(-1);
zzlazio 2005-08-10
  • 打赏
  • 举报
回复
如果Connected :=False
那相应的DataSet也就Close
与DataSet绑定的界面内容就空了,还要手动打开DataSet,界面要重新刷新,不是很不爽?

------------------------------------------------------------------------------------
你可以用一个TempQuery来处理COPY
jhshen 2005-08-10
  • 打赏
  • 举报
回复
如果Connected :=False
那相应的DataSet也就Close
与DataSet绑定的界面内容就空了,还要手动打开DataSet,界面要重新刷新,不是很不爽?
hqhhh 2005-08-09
  • 打赏
  • 举报
回复
我以前也有碰到过这样的问题:
原因所在就是必须把数据集的连接全部断开,即设置Connected :=False
用Copy才可执行成功!
hqhhh 2005-08-09
  • 打赏
  • 举报
回复
应该不需要DataSet.Refresh;
我已调试过,
当POST后,数据会立即保存到数据库中,不需在再关闭!
但如果你在程序中用Copy的方法保存备份,必须把数据连接全断开,不然“Copy”这个命令不能执行!
上述并不是数据保存的问题,而是copy命令没有执行成功的原因!
jhshen 2005-08-09
  • 打赏
  • 举报
回复
TADODataSet 好像没有UpdateApply方法吧,
存盘前调用一下DataSet.Refresh;
结果又是正确的,缺点是,与此绑定的datagrid会刷新一下,不够完美。
chenxuqian 2005-08-09
  • 打赏
  • 举报
回复
cumtbwxj 2005-08-09
  • 打赏
  • 举报
回复
不是Post
而是UpdateApply(-1)应该是这个,你试一下


最好还是用Update
jhshen 2005-08-09
  • 打赏
  • 举报
回复
单步调试的时候,结果是对的
jianke5555 2005-08-09
  • 打赏
  • 举报
回复
用了事务?三层?
如果以上两种都不是的话,你就在COPY文件前先打开看是否已经更新?如果没有,单步执行检查一下!
zsjzwj 2005-08-09
  • 打赏
  • 举报
回复
那你追踪一下,看copy文件时到底有没有post
jhshen 2005-08-09
  • 打赏
  • 举报
回复
locktype属性已经是是ltOptimistic
GARNETT2183 2005-08-09
  • 打赏
  • 举报
回复
同意楼上的..呵呵..
zsjzwj 2005-08-09
  • 打赏
  • 举报
回复
TADODataSet的locktype属性要是ltOptimistic才行,你的可能是ltBatchOptimistic

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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