设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[窗体] 日期控件代码出错

[复制链接]
跳转到指定楼层
1#
发表于 2012-11-15 18:08:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ycxchen 于 2012-11-15 18:10 编辑

在例子中,录入的日期如果结束日期大于开始日期,则下面代码能执行,“结束日期”文本框能获得正确日期,但录入的日期如果结束日期小于开始日期,重新录入,不论是“开始日期”还是“结束日期”获得焦点,总是“开始日期”文本框获得日期值的,也就是说下面代码执行不了,代码有什么不完善?

Private Sub 结束日期_GotFocus()
If NewRecord Then
Me.Calendar6.Tag = "结束日期"
Me.Calendar6.Visible = True
End If
End Sub
另,如果在录入新记录时出错,想将刚录入的记录删除,后重新录入,代码如下,但也不能正确执行。我看代码是没错的。
Private Sub Command21_Click()
On Error GoTo Err_Command21_Click
If NewRecord Then
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
DoCmd.GoToRecord , , acLast
End If
Exit_Command21_Click:
    Exit Sub
Err_Command21_Click:
    MsgBox Err.Description
    Resume Exit_Command21_Click
   
End Sub
思维乱了,盼指教。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2012-11-15 21:11:30 | 只看该作者
帮你修改了下.希望能合适你用!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
3#
 楼主| 发表于 2012-11-16 10:54:41 | 只看该作者
谢谢Agent的热心帮忙!
楼上的小程序是年前写的,近日别人在用时发觉有点问题。昨晚详细看看,发现问题是下面红色语句引发的。当时为什么要加上此语句,自己记不起思路了。

Private Sub 结束日期_AfterUpdate()
If IsNull([开始日期]) Then
   MsgBox "请输入考勤开始日期!", vbExclamation + vbOKOnly, "温馨提示"
    Me.开始日期.SetFocus
     Else
      'DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
      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

正如ROYCH版主以往所说,编程各有各的习惯,Agent加上了“保存”、“撤消”等按钮,未尝不可。

点评

DoMenu这个命令一般是按按钮向导完成所生成的命令。  发表于 2012-11-16 22:13
4#
 楼主| 发表于 2012-11-16 10:58:43 | 只看该作者
本帖最后由 ycxchen 于 2012-11-16 11:01 编辑

原因估计是数据保存了,ACCESS就认为不再是新记录了,下面的语句执行不了,
Private Sub Command21_Click()
On Error GoTo Err_Command21_Click
If NewRecord Then

DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
DoCmd.GoToRecord , , acLast
End If
Exit_Command21_Click:
    Exit Sub

Err_Command21_Click:
    MsgBox Err.Description
    Resume Exit_Command21_Click
   
End Sub
5#
 楼主| 发表于 2012-11-17 17:35:09 | 只看该作者
本帖最后由 ycxchen 于 2012-11-17 19:45 编辑

现在想起来了,当时写入DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
目的是运行如下语句:
  If DCount("*", "年休已满检测") > 0 Then
            MsgBox "已超出年休假限休天数,请重新确认并核对后修改!", vbExclamation + vbOKOnly, "温馨提示"
            DoCmd.GoToRecord , , acLast '回到最后一条记录,以便记录的修改
          Me.结束日期.SetFocus
       End If
但不运行DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70语句,
年休已满检测就不能进行,如何解决?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-4 13:38 , Processed in 0.140081 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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