设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[其它] 禁止用户在某文本框内输入特殊字符

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2015-11-23 21:51:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
麻烦请问一下各位,在窗体上有一个文本框,用户可以自由输入内容,但是这个文本框里的字符会作为文件名,如果用户输入的内容还有非法文件名字符,在生成文件的时候就会报错。

所以想请问一下怎么能实现在用户输入完成之后,检测输入内容里是否还有非法特殊字符呢?如果有则弹出消息框提示。

谢谢。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2015-11-23 23:16:28 | 只看该作者
select case 文本框
  case "*","/" 等等
   msgbox "您输入内容不合法,嘻嘻“
   文本框.Undo
end select
3#
发表于 2015-11-23 23:17:50 | 只看该作者
在稳步框的BeforeUpdate更新前事件中放入

点击这里给我发消息

4#
 楼主| 发表于 2015-11-24 00:08:09 | 只看该作者
自己在网上找到了,自己回答自己的问题真是太悲惨了。。。。。。

文本框的名字叫Title,代码写在更新事件里。乃萌自己试试吧,不要问我为什么,我就是改改能用的人.....


Private Sub Title_AfterUpdate()
   
    If Not IsNull(Title.Value) Then

        Dim SpecielCharToSearch As String
        Dim CtrlErrTitre As Long
        Dim SpecCharExist As Boolean
        Dim i As Integer

        SpecCharExist = False

        CarToSearch = "`~.&~#|\^@£$%*!/:;?><µ°²§¨¤," & Chr(34)
        For i = 1 To Len(SpecielCharToSearch)
            CtrlErrTitre = InStr(Titre.Value, Mid(SpecielCharToSearch, i, 1))
            '挨个查找定义的特殊字符是否存在于文本框内,如果存在则返回此字符串的位置,如果不存在则返回0
            If CtrlErrTitre <> 0 Then
                SpecCharExist = True
            End If
        Next i
        If SpecCharExist = True Then
            MsgBox "标题不能包含以下特殊字符: " & Chr(34) & ".&~#|\^@£$%*!/:;?><µ" & Chr(34) & "。请重新输入。", vbExclamation + vbOKOnly, "禁止输入特殊字符"
            Title.Value = Null
            Titre.SetFocus
        End If
    End If
     
End Sub

点击这里给我发消息

5#
发表于 2015-11-24 08:27:55 | 只看该作者
1.更新后事件
2.直接弹出保存文件对话框。
6#
发表于 2015-11-24 10:25:43 | 只看该作者
我一般会在提交时再统一检测,不符合的再提示。
另外,如果不嫌复杂,用正则表达式效率会更高一些。
这个大概就是person童鞋吧?
7#
发表于 2015-11-24 11:14:13 | 只看该作者
Charline 发表于 2015-11-24 00:08
自己在网上找到了,自己回答自己的问题真是太悲惨了。。。。。。

文本框的名字叫Title,代码写在更新事 ...

写成函数返回逻辑值,将该还是用于有效性规则属性。

点评

我很赞成  发表于 2015-11-24 15:55
8#
发表于 2015-11-24 11:26:09 | 只看该作者
小猴猴老伤心了

点击这里给我发消息

9#
 楼主| 发表于 2015-11-24 15:10:56 来自手机 | 只看该作者
roych 发表于 2015-11-24 10:25
我一般会在提交时再统一检测,不符合的再提示。
另外,如果不嫌复杂,用正则表达式效率会更高一些。
这个 ...

正是是洒家!

正则表达式是啥?望阁下不吝赐教!
来自: 微社区
10#
发表于 2015-11-24 15:47:56 | 只看该作者
本帖最后由 roych 于 2015-11-24 15:55 编辑
Charline 发表于 2015-11-24 15:10
正是是洒家!

正则表达式是啥?望阁下不吝赐教!

试试这个:
引用Microsoft VBScript Regular Expressions 5.5
  1. Function GetReg(ByVal strSource As String) As Boolean
  2.     Dim reg As New RegExp
  3.     Dim strPattern As String
  4.     strPattern = "[`~\.&~#\|\^@£\$%\*!/:;?><μ°§¨¤,""]"
  5.     reg.Pattern = strPattern
  6.     GetReg = reg.test(strSource)
  7. End Function
复制代码
值得注意的是,部分属于正则表达式的特殊字符,需要使用反斜杠【\】进行转义。例如:匹配点号【.】,应使用【\.】
引用方法:在button的click事件里输入:
if GetReg(me.text0) then
msgbox "您输入了特殊字符,请重新输入"
me.text0=""
me.text0.setfocus
end if



本帖子中包含更多资源

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

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-28 00:14 , Processed in 0.101732 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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