设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

123下一页
返回列表 发新帖
查看: 8652|回复: 23
打印 上一主题 下一主题

[窗体] 你为该字段输入的值无效——其错误号是多少[已解决]

[复制链接]
跳转到指定楼层
1#
发表于 2011-2-10 13:01:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 简 于 2011-2-12 12:57 编辑

我在输入时间时,需要将(小时:分钟)转化为小时,比如3:30转化为小时后就是3.5小时。我在文本框里采用中时间的格式,这时出现的问题是:当时间为3小时时,我想提高输入效率,省略后面的:00,直接回车,这时就出现错误提示,如下图所示:


我就想问,这个错误提示的错误号是多少,我想屏蔽它,应该怎么处理。

还有,如果我输入3:00时,有没有办法直接输入3而不弹出上面的错误提示呢。

本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2011-2-10 13:34:03 | 只看该作者
大体如此吧:

  1. Private Sub Txt_Input_LostFocus()
  2. If Not IsDate(Me.Txt_Input) Then
  3. Me.Txt_Input = Me.Txt_Input & ":00"
  4. Me.txt_Output = Round(Hour(Me.Txt_Input) + Minute(Me.Txt_Input) / 60, 1)
  5. End If
  6. Me.txt_Output = Round(Hour(Me.Txt_Input) + Minute(Me.Txt_Input) / 60, 1)
  7. End Sub
复制代码


本帖子中包含更多资源

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

x
3#
发表于 2011-2-10 13:43:32 | 只看该作者
屏蔽消息框的代码:
  1. Private Sub Form_Error(DataErr As Integer, Response As Integer)
  2.     Select Case DataErr
  3.     Case 2113
  4.         Response=acDataErrContinue
  5.     End Select
  6. End Sub
复制代码
至于自动补充数值的问题,没有什么太好的办法,因为这个错误是数据库引擎触发的,早于更新前事件,所以只能不把格式设为时间格式,然后在更新后或更新前判断是否输入完全,如果没有输入完全则补充完全,不过这种方式不是很理想
4#
 楼主| 发表于 2011-2-10 17:57:10 | 只看该作者
我又遇到一个问题,当我采用短时间格式时,短时间的小时范围是0—23,当我输入的工时大于24时,就弹出错误提示。这怎么办呢,是不是只能取消短时间格式呢。

5#
发表于 2011-2-10 18:31:42 | 只看该作者
Hoho,我和红尘版主的都没有采用日期格式的噢。
6#
 楼主| 发表于 2011-2-10 19:27:17 | 只看该作者
我现在只能这样做了,取消日期格式,然后借助掩码“00:00;0;_”来保证输入格式。我的代码如下:

Private Sub Txt_Input _AfterUpdate()
Dim strtime
    strtime = Left(Me.Txt_Input , 2) + Right(Me.Txt_Input , 2) / 60
    Me.Txt_Output = Format(strtime, "0.00")
End Sub

我想我这样做比你那段代码似乎要简单些。

我顺便再问,这个错误提示的错误号是多少呢,我还是想屏蔽它,改为自己的提醒方式。


本帖子中包含更多资源

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

x
7#
 楼主| 发表于 2011-2-11 17:45:32 | 只看该作者
我还想问,以这个问题为例,如果我要把小时转化为(小时:分钟),格式是hh:mm,同时又要考虑到小时>24的情况,那我又该怎么办呢。
8#
发表于 2011-2-11 19:07:49 | 只看该作者
本帖最后由 todaynew 于 2011-2-11 19:10 编辑

进位制问题,有何难哉?
假设变量h中存小时数据,则:
str=format(int(h) mod 24,"00") & ":" & format(int((h-int(h))*60 ),"00")
9#
 楼主| 发表于 2011-2-11 20:21:06 | 只看该作者
本帖最后由 简 于 2011-2-11 20:22 编辑
todaynew 发表于 2011-2-11 19:07
进位制问题,有何难哉?
假设变量h中存小时数据,则:
str=format(int(h) mod 24,"00") & ":" & format(i ...


原来如此,多谢多谢哈~~~~

另外,你能告诉我掩码输入错误时的错误号不,见6楼的图片。
10#
发表于 2011-2-11 20:27:36 | 只看该作者
本帖最后由 todaynew 于 2011-2-11 20:33 编辑
简 发表于 2011-2-11 20:21
原来如此,多谢多谢哈~~~~

另外,你能告诉我掩码输入错误时的错误号不,见6楼的图片。


不知道,对错误号没有研究。因为我原则是不给同志们犯错误的机会。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-27 17:42 , Processed in 0.105798 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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