Office中国论坛/Access中国论坛

标题: 当几个文本框都出现错误时是否可以给出一个总的提示 [打印本页]

作者: blsoft    时间: 2004-4-11 19:16
标题: 当几个文本框都出现错误时是否可以给出一个总的提示
假设窗体中有txtName、txtDate、txtNum三个文本框,一个OK按钮,在OK的Click事件中首先判断文本框的输入是否正确,如txtName不能为空,txtDate不能大于今天的日期,txtNum数字不能大于1000,如果不正确的话给出提示并中断程序。请问是否能一次给出下面这样总的提示:
txtName不能为空
txtDate日期不能大于今天
txtNum数值不能超过1000
我以前看我的一个朋友在用c#开发的时候给出过这样的提示,不知道vba中是否也可以做出这样的效果




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


作者: sea.er    时间: 2004-4-11 20:32
if isnull(txtName) and txtDate>date() and txtNum>1000 then
msgbox "txtName不能为空,txtDate日期不能大于今天,txtNum数值不能超过1000"
end if
作者: blsoft    时间: 2004-4-11 22:45
如果有一个输入的是对的呢?比如说txtName输入是正确的,而另外两个有错误,如何实时生成提示呢?
作者: binuochao    时间: 2004-4-12 01:09
如果三个都错用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


作者: blsoft    时间: 2004-4-12 02:10
感谢两位的热心回答。不过我的意思是如何去动态地处理这个提示,也就是说哪个错了就提示哪个,有一个的话,就提示一行,有两个的话就提示两行,也就是说,给出的提示是根据错误而动态变化产生的,用or的话,提示的内容是固定的。
这个问题是我在处理一个窗体里有多个文本框的输入规则时遇到的,一个一个的去判断很麻烦,也感觉很累,所以请教各位,不知道有没有其它简单一些的办法。
作者: blsoft    时间: 2004-4-12 23:35
终于解决,不过有点小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,无法对错误的文本框进行精确的设置焦点了。不过问题不大,输错了这么多,回头重输入一遍吧:)






欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3