设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[与其它组件] 当几个文本框都出现错误时是否可以给出一个总的提示

[复制链接]
跳转到指定楼层
1#
发表于 2004-4-11 19:16:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
假设窗体中有txtName、txtDate、txtNum三个文本框,一个OK按钮,在OK的Click事件中首先判断文本框的输入是否正确,如txtName不能为空,txtDate不能大于今天的日期,txtNum数字不能大于1000,如果不正确的话给出提示并中断程序。请问是否能一次给出下面这样总的提示:
txtName不能为空
txtDate日期不能大于今天
txtNum数值不能超过1000
我以前看我的一个朋友在用c#开发的时候给出过这样的提示,不知道vba中是否也可以做出这样的效果




[此贴子已经被作者于2004-4-12 15:56:09编辑过]

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2004-4-11 20:32:00 | 只看该作者
if isnull(txtName) and txtDate>date() and txtNum>1000 then
msgbox "txtName不能为空,txtDate日期不能大于今天,txtNum数值不能超过1000"
end if
3#
 楼主| 发表于 2004-4-11 22:45:00 | 只看该作者
如果有一个输入的是对的呢?比如说txtName输入是正确的,而另外两个有错误,如何实时生成提示呢?
4#
发表于 2004-4-12 01:09:00 | 只看该作者
如果三个都错用and
if nzl(txtName,"")="" and datevalue(txtDate)>date() and int(txtNum)>1000 then
msgbox "txtName不能为空,txtDate日期不能大于今天,txtNum数值不能超过1000"
exit sub
end if
如果三个有一个错用 OR 或分开使用使用OR:
if nzl(txtName,"")="" or datevalue(txtDate)>date() or int(txtNum)>1000 then
msgbox "txtName不能为空,txtDate日期不能大于今天,txtNum数值不能超过1000"
exit sub
end if
使用分开:
if nzl(txtName,"")=""  then
msgbox "txtName不能为空,"
exit sub
end if

if datevalue(txtDate)>date()
msgbox "txtDate日期不能大于今天"
exit sub
end if

if  int(txtNum)>1000 then
msgbox "txtNum数值不能超过1000"
exit sub
end if

5#
 楼主| 发表于 2004-4-12 02:10:00 | 只看该作者
感谢两位的热心回答。不过我的意思是如何去动态地处理这个提示,也就是说哪个错了就提示哪个,有一个的话,就提示一行,有两个的话就提示两行,也就是说,给出的提示是根据错误而动态变化产生的,用or的话,提示的内容是固定的。
这个问题是我在处理一个窗体里有多个文本框的输入规则时遇到的,一个一个的去判断很麻烦,也感觉很累,所以请教各位,不知道有没有其它简单一些的办法。
6#
 楼主| 发表于 2004-4-12 23:35:00 | 只看该作者
终于解决,不过有点小BUG,先看看步骤:
1、首先声明一个变量,做为动态提示文本
Private strmsgbox As String

2、定义一个函数,判断各个文本框是否输入错误
Private Function Get输入() As Boolean
    strmsgbox = ""
   
    If IsNull(Me.txtName)  Or Nz(txtName,"")=""   Then
        Get输入 = False
        strmsgbox = strmsgbox & "txtName不能为空!" & Chr(10) & Chr(13)
    Else
        Get输入 = True
    End If
   
    If CDate(txtDate)>Date() Then
        Get输入 = False
        strmsgbox = strmsgbox & "txtDate日期不能大于今天!" & Chr(10) & Chr(13)
    Else
        Get输入 = True
    End If
   
    If Int(txtNum)>1000 Then
        Get输入 = False
        strmsgbox = strmsgbox & "txtNum数值不能超过1000!" & Chr(10) & Chr(13)
    Else
        Get输入 = True
    End If
End Function

3、在OK的Click事件中
Private Sub OK_Click()
    If Get输入 = False Then
        MsgBox strmsgbox, vbInformation, "系统提示"
        Exit Sub
    End If
   
    输入正确后的语句
End Sub

现在如果有多个按钮需要在点击时判断文本框的输入,只需要调用这个函数就行了。
不过有点BUG,无法对错误的文本框进行精确的设置焦点了。不过问题不大,输错了这么多,回头重输入一遍吧:)

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

本版积分规则

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

GMT+8, 2024-11-10 19:59 , Processed in 0.082499 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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