Office中国论坛/Access中国论坛

标题: 更新事件发生后为什么不保存记录的? [打印本页]

作者: ycxchen    时间: 2011-12-5 16:59
标题: 更新事件发生后为什么不保存记录的?
代码如下,但不能正确运行
Private Sub 结束日期_AfterUpdate()
If IsNull([开始日期]) Then
   MsgBox "请输入考勤开始日期!", vbExclamation + vbOKOnly, "温馨提示"
    Me.开始日期.SetFocus
     Else
      If CVDate([开始日期]) > CVDate([结束日期]) Then
        MsgBox "开始日期不能大于结束日期,请重新确认!", vbExclamation + vbOKOnly, "温馨提示"
         Me.开始日期.SetFocus
           Else
            
             If DCount("*", "年休已满检测") > 0 Then
            MsgBox "已超出年休假限休天数,请重新确认并核对后修改!", vbExclamation + vbOKOnly, "温馨提示"
            DoCmd.GoToRecord , , acLast '回到最后一条记录,以便记录的修改
          Me.结束日期.SetFocus
       End If
     End If
  End If
End Sub

例子:张三的工龄为36年,年休期限为15天,现已休了13天,我在录入窗口中录入他新的年休考勤记录(2011-03-09至上011-03-15),按理2011-03-09至上011-03-15共7天,那么,张三的年休已超出15天的期限,在录入结束日期时应予以提示,即
If DCount("*", "年休已满检测") > 0 Then这句要运行,但录入后不正确运行。我认为,这是新的年休考勤记录没保存造成的,致使DCount函数不能统计最新的记录。请问,既然更新事件发生了,为什么不保存记录的?
[attach]47540[/attach]
作者: Henry D. Sy    时间: 2011-12-5 22:09
  1. Private Sub 结束日期_AfterUpdate()
  2.     If IsNull([开始日期]) Then

  3.         MsgBox "请输入考勤开始日期!", vbExclamation + vbOKOnly, "温馨提示"
  4.         Me.开始日期.SetFocus
  5.     Else
  6.         DoCmd.RunCommand acCmdSaveRecord
  7.         If CVDate([开始日期]) > CVDate([结束日期]) Then
  8.             MsgBox "开始日期不能大于结束日期,请重新确认!", vbExclamation + vbOKOnly, "温馨提示"
  9.             Me.开始日期.SetFocus
  10.         Else

  11.             If DCount("*", "年休已满检测") > 0 Then
  12.                 MsgBox "已超出年休假限休天数,请重新确认并核对后修改!", vbExclamation + vbOKOnly, "温馨提示"
  13.                 DoCmd.GoToRecord , , acLast    '回到最后一条记录,以便记录的修改
  14.                 Me.结束日期.SetFocus
  15.             End If
  16.         End If
  17.     End If
  18. End Sub
复制代码

作者: ycxchen    时间: 2011-12-6 09:22
本帖最后由 ycxchen 于 2011-12-6 09:22 编辑

谢谢版主指教!其实,我也试过用你的保存数据的类似语句:DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70;但有时候不能正确运行,提示与Calendar6_Click()有冲突,如何解决?
作者: Henry D. Sy    时间: 2011-12-6 10:14
Calendar6_Click()是干嘛用的?
作者: ycxchen    时间: 2011-12-6 10:42
本帖最后由 ycxchen 于 2011-12-6 10:43 编辑

不好意思,说不清楚,是说与日历控件的单击事件(Calendar6_Click())有冲突,请问,如何解决?
作者: Henry D. Sy    时间: 2011-12-6 10:53
建议日期控件用下面这个
[attach]47542[/attach]
作者: ycxchen    时间: 2011-12-6 11:01
谢谢版主的热心帮忙!我用的日历控件是ACCESS自带的呀,我真的不明既然更新事件发生了,为什么不保存记录的?

作者: Henry D. Sy    时间: 2011-12-6 11:04
绑定窗体要窗体更新后才保存到表,而不是某个控件更新后就自动保存,除非您用保存语句保存记录!
作者: ycxchen    时间: 2011-12-6 11:53
谢谢指教!




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3