设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 6676|回复: 10
打印 上一主题 下一主题

[帮助] 求助:如何通过vba修改当前字段

[复制链接]
跳转到指定楼层
1#
发表于 2015-1-12 10:27:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在日期字段的“更新前”事件加了判断,避免跨年输入日期出错,因为我平时输入日期,是没有输入年份的(主要是懒),直接输入“月-日”,到了一月份的时候,登记去年12月份的单据时,就有可能输入了今年12月份的日期了,所以我在“更新前”事件中判断这个日期是否有这样的错误,如果发现有这个错误,就把年份更正过来,代码如下:
me.日期=dateadd("yyyy",-1,me.日期)
但是调试就出错了,溢出错误,提示我不能对该字段在“更新前”这样赋值
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2015-1-12 10:30:55 | 只看该作者
首先,要确保 me.日期 是正确日期格式。其次,dateadd里面的第一个参数"y"一个就够

点击这里给我发消息

3#
发表于 2015-1-12 10:30:56 | 只看该作者
你可用 msgbox 或debug.print
先显示 me.日期  的内容是什么
应该就可查到原因了
4#
 楼主| 发表于 2015-1-12 10:45:55 | 只看该作者
盗梦 发表于 2015-1-12 10:30
首先,要确保 me.日期 是正确日期格式。其次,dateadd里面的第一个参数"y"一个就够

盗梦兄,日期格式没错的,而且我试过,dateadd里面的参数,只一个“y”是不行的,反正我的格式没错,用msgbox检验过了,现在提示的是:
运行时错误 ‘-2147352567(80020009)’:
为这个字段的beforeupdate 或 validationrule 属性设置的宏或函数将阻止 数据库 在字段中保存数据。

点击这里给我发消息

5#
发表于 2015-1-12 12:10:49 | 只看该作者
你可显示一下 修改的日期是什么内容
明显是生成后的日期格式不对呢
6#
发表于 2015-1-12 16:37:19 | 只看该作者
本帖最后由 todaynew 于 2015-1-12 16:39 编辑

转换一下数据类型即可。
me.日期.value=dateadd("yyyy",-1,cdate(me.日期.value))

7#
 楼主| 发表于 2015-1-12 21:42:25 | 只看该作者
todaynew 发表于 2015-1-12 16:37
转换一下数据类型即可。
me.日期.value=dateadd("yyyy",-1,cdate(me.日期.value))

不是这个原因啦,我调试过,用以下语句
me.日期=date
依然提示这样的错误,关键是对字段本身不能通过更新前对该字段赋值,请各位大哥在帮帮忙
8#
发表于 2015-1-13 08:59:34 | 只看该作者
smilingkiss 发表于 2015-1-12 21:42
不是这个原因啦,我调试过,用以下语句
me.日期=date
依然提示这样的错误,关键是对字段本身不能通过更 ...

与更新前事件没求关系,在按钮的单击事件中写:

dim ssql as string
dim d as date
d=cdate(me.日期.value)
if abs(DateDiff("m",d,date))>3 then
    d=dateadd("yyyy",-1,d)
end if
'd用于ssql语句
ssql="..."
currentdb.execute ssql
9#
 楼主| 发表于 2015-1-14 14:15:36 | 只看该作者
todaynew 发表于 2015-1-13 08:59
与更新前事件没求关系,在按钮的单击事件中写:

dim ssql as string

版主,我之前的设计是这样的:直接在该字段的“更新前”事件写下代码:
   If Me.日期 > DateAdd("m", 3, Date) Then                      '防止跨年录入的时候输错日期
      MsgBox "日期大于当天3个月,请核对输入日期", vbOKOnly, "提示框"
      Me.日期.Undo
      Cancel = -1
      Exit Sub
   End If
这样子的话,我只要填错日期,就会undo,让我重新输入,现在我是想能否在这个“更新前”的事件中更改一下语句,让它可以自动帮我纠正,但是只要在“日期”字段(不是什么按钮)的“更新前”事件中,只要重新赋值给“日期”字段,就会提示出错
10#
发表于 2015-1-15 10:21:28 | 只看该作者
smilingkiss 发表于 2015-1-14 14:15
版主,我之前的设计是这样的:直接在该字段的“更新前”事件写下代码:
   If Me.日期 > DateAdd("m", 3 ...

何必如此啰嗦呢?将校验功能要么放在有效性规则中,或者并入按钮事件中不是更简洁吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-27 02:17 , Processed in 0.126555 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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