设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[窗体] 窗体中如何限制输入数字的长度范围?

[复制链接]
跳转到指定楼层
1#
发表于 2010-1-4 17:23:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如窗体中有身份证这个框,要显示输入数字要>15位数<20位数。
这样应该怎样设置?[size=4][color=teal]
(VBA基础-相关文章技巧链接):
[url=http://www.office-cn.net/access-vb/267.html]Access 窗体中如何限制输入数字的长度范围?[/url][/color][/size]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2010-1-4 18:00:48 | 只看该作者
身份证应该是文本,否则有的同志的最后一位为英文字母,你就不要他了?
你可以在窗体的更新前事件或框定更新前事件中判断内容的长度,如果为15或18就是合法,否则为非法,例如
Private Sub Form_BeforeUpdate(Cancel As Integer)
  If Len(Text0) <> 15 Then
    If Len(Text0) <> 18 Then
      MsgBox "非法"
      Cancel = True
      DoCmd.RunCommand acCmdUndo
      Text0.SetFocus
    End If
  End If
End Sub
3#
 楼主| 发表于 2010-1-4 22:03:54 | 只看该作者
当我输入上面那段代码测试后。输入不是15位的时候,弹出提示错误点击后出现以下图片的错误。

本帖子中包含更多资源

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

x
4#
发表于 2010-1-5 08:25:48 | 只看该作者
用me.undo
5#
 楼主| 发表于 2010-1-5 16:57:55 | 只看该作者
一样不行啊
6#
发表于 2010-1-6 09:18:47 | 只看该作者
既然有Cancel = True,不要DoCmd.RunCommand acCmdUndo可以吧?
7#
发表于 2010-1-6 10:59:32 | 只看该作者
有此问题,为了避免内部命令之间的相互限制,可以不用cancel、undo,直接重置text0=“”不就得了。
我一般用change事件
8#
发表于 2010-1-6 16:45:10 | 只看该作者
设输入框名称为Text0
有效性规则属性设为:IsNull(Text0)=True Or ((Len(Nz(Text))>15 And Len(Nz(Text0))<20
有效性文本属性设为:长度只能为15位以上20位以下。
9#
 楼主| 发表于 2010-1-7 08:25:41 | 只看该作者
谢谢楼上们的朋友。
10#
发表于 2010-11-5 16:58:08 | 只看该作者
看看吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 05:36 , Processed in 0.109589 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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