如何取消DBGrid对Table.Post的调用(100分)

  • 主题发起人 主题发起人 y313
  • 开始时间 开始时间
Y

y313

Unregistered / Unconfirmed
GUEST, unregistred user!
用一个DBGrid,Table和DataSource,在DBGrid中修改记录后,如何在移向另一条记录时,取消Table的post。即:在用户修改记录后,移向另一条记录时,DBGrid会自动调Table的post方法,我想给出提示——询问用户是否将修改写入数据库,若用户选“不写入数据库”,程序中应如何取消DBGrid对Table.post的调用?
 
只有用缓存更新了吧。
 
在DBGrid.DataSource.Dataset.OnPost 事件中,也就是DBGrid得相连得TTable
OnPost事件。
if isDBGridMoveKey then
if not 提问是否保存 then Raise Exception.Create('');

然后在DBGrid的OnKeyDown等事件中对isDBGridMoveKey赋值
 
用缓存更新
把DBGrid.ChachedUpdate设置为true

用ApplyUpdate提交就可以了
 
先把 Table 的 ChachedUpdate 设置为 true。
如果用户确认保存,就用 ApplyUpdate 提交;
如果用户不保存,用 CancelUpdates 放弃。

To wrench:
你说 >> 把 DBGrid.ChachedUpdate设置为true
是笔误吧?DBGrid 好象...
 
to Nose:
是BeforePost吧
procedure TForm1.Table1BeforePost(DataSet: TDataSet);
begin
if MessageBox(.....) = ID_NO then // 询问用户是否将修改写入数据库
begin // 若用户选“不写入数据库”
Abort;
end;
end;
 
别用table用query来解决,保存使用applyupdate.
 
哎呀
笔误
是table或query的ChachedUpdate 属性
 
同意xWolf
我用过BeforeInsert,在过程中加了abort语句,禁止增加记录。
 
To xWolf:
若用户选“取消”,记录指还指向这一条记录,怎样才能将记录指针指向
下一条记录
 
多人接受答案了。
 
若有了其他方法或答案例子,请E-Mail给我,谢谢大家!
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
875
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部