我想让用户直接在DBGrid里就能修改数据,于是我就在‘修改’按狃 将ADOuery设为ADOQuery.edit状态,然后在‘保存’按狃 里ADOQuery.post, 可是我测试发现没有点“保存”,即没有post,也照样修改了后台的数据库,这样数据会很不安全。为什么ADOQuery没有post也会把修改的东西覆盖数据库里原来的东西呢?万一用户以为只要不点“保存”,随便修改了也没事,结果恰恰有事,怎么办呀。
调试欢乐多
abort;
如果是这样就会自动保存了.
要控制他就要在ADOQuery的BeforePost事件中写代码
=================================================我想是因为你的DBGrid和数据库关联起来了
比如你选中的行移动那么数据库中ADOQuery1所对于的行也移动
你把DBGrid中的行删除,数据库里也删除了
比如说你用DBGrid1.selected.delete!!!这样就可以把数据库对应的行删除,而不需要自己写代码了
abort;
所以用戶不需要點你設置的保存按鈕,就已經修改了數據。
在before post 裡加語句進行詢問,如
if Application.MessageBox('要保存数据吗?','请问',MB_YESNOCANCEL+MB_ICONQUESTION+MB_DEFBUTTON3)<>IDYES then
abort;
是可行的!
但,有另外一個辦法我感覺應該更好
設置adoquery的locktype属性为ltBatchOptimistic
把adoquery1.UpdateBatch();這條命令,放在你的保存按鈕中adoquery1.post 之後.
這樣你在dbgrid上的所有操作都沒有保存,
除非執行了adoquery1.UpdateBatch()
但是我还是看懂一点意思了。 试成功回来给分。