设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1513|回复: 4
打印 上一主题 下一主题

[其它] 记录更新前的尴尬之我见!

[复制链接]
跳转到指定楼层
1#
发表于 2003-11-10 00:37:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以下是论坛中高手的做法
Private Sub FORM_BeforeUpdate(Cancel As Integer)
  If MsgBox("保存吗?", vbYesNo, Me.Caption) <> vbYes Then
    Cancel = True
  End If
End Sub
或者
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim strMsg As String
    strMsg = "数据已经改变."
    strMsg = strMsg & vbCr & "你想保存吗?"
    strMsg = strMsg & vbCr & "点击[是]保存,点击[否]放弃保存。"
    If MsgBox(strMsg, vbQuestion + vbYesNo, "记录保存吗?") = vbYes Then
        ' 什么也不需要做,就会保存记录
    Else
        DoCmd.RunCommand acCmdUndo
        
        ' 对于Access 95, 使用DoMenuItem方法代替
        'DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
    End If
End Sub

[move]--使用这样的代码是很好的,可是如果有子窗体的话就麻烦了,不是提醒次数过多,就是子窗体没有数据也保存,总之不得法,众高手能否“讨个说法”?[/move][em00]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2003-11-10 01:31:00 | 只看该作者
这个问题也一直困扰着我,我是用toolbar做按钮的,如果光标在子窗体再按增加会没反应
,必须在主窗体加一个setfocus,这样一来主窗体有一条黑带不美观。关注
3#
发表于 2003-11-10 04:44:00 | 只看该作者
我的方法是在主窗体添加一个checkbox,让敌人自己选择是否在子窗体变化时也提醒。

4#
发表于 2003-11-10 08:13:00 | 只看该作者
另外的心得就是最好不要在beforeUpdate里面用cancel.
5#
发表于 2003-11-10 19:36:00 | 只看该作者
关于这个问题,我在软件开发的过程中深有体会,我的作法是:
      在主窗体设置一个bool型的公共变量isDirty,在主窗体及子窗体的dirty事件将isDirty置为True,在窗体的保存事情中将isDirty设为False,我不在form_BeforeUpdate事件中设置代码,只在窗体关闭/记录跳转而且isDirty为真的时候,才提示用户注意保存记录.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-20 15:01 , Processed in 0.101267 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表