当前位置:编程学习 > VB >>

苍天呀大地呀,如何才能使用户输入有效化呀!!!???

请先看下面的源码, 是access2003里的:

Private Sub cmdOk_Click()
    Dim Rst As Recordset
    If Me.txtUser & "" = "" Then
        msgbox "Please enter you ID!"
        txtUser.SetFocus
        Exit Sub
    End If
    
    If UCase(Me.txtUser) = "ADMIN" Then
      Set Rst = CurrentDb.OpenRecordset("select * from tblAdmin Where UserName='" & Me.txtUser & "'")
    
   
    
    Else
        Set Rst = CurrentDb.OpenRecordset("select * from tblAdmin Where id=" & Me.txtUser)
          
    End If
    
    With Rst
        If .RecordCount <> 0 Then
            '如果有用户
            If !PassWord = Me.txtPsw Then
                MyVal.isLogin = True
                MyVal.strUser = !UserName
                MyVal.strUserID = !id
                DoCmd.Close acForm, Me.Name
                If !UserLevel = "admin" Then
                    DoCmd.OpenForm "admin"
                Else


                    DoCmd.OpenForm "Select"
                End If
                Exit Sub
            End If
            '关闭窗体
        End If
    End With
    msgbox "Incorrect UserID or Password!"
End Sub

用户名是数据库自动生成的序列号, 1234...等等

这个源码只解决了三种情况:

1 用户名为空白的情况, 
2 用户名为admin
3 用户名是在数据库里可以找到其他数字

问题是, 如果用户名不存在呢? 比如随便输入一个数据库里没有的用户名, 程序就会出错

要怎样做才能使这个程序给出正确的错误提示, 然后让用户重新输入呢?

--------------------编程问答--------------------         With   Rst 
                If   .RecordCount   <>   0   Then 
                        '如果有用户 
                        If   !PassWord   =   Me.txtPsw   Then 
                                MyVal.isLogin   =   True 
                                MyVal.strUser   =   !UserName 
                                MyVal.strUserID   =   !id 
                                DoCmd.Close   acForm,   Me.Name 
                                If   !UserLevel   =   "admin"   Then 
                                        DoCmd.OpenForm   "admin" 
                                Else 


                                        DoCmd.OpenForm   "Select" 
                                End   If 
                                Exit   Sub 
                        End   If 
                        '关闭窗体 
                else
                      msgbox "没有该用户名!"
                End   If 
        End   With 
--------------------编程问答-------------------- 楼上的, 谢了, 但不好用 --------------------编程问答-------------------- 得到用户输入的数据时

先查用户名存在否,这个不会出错,因为使用了字符串

不存在时,请用isnumeric判断是否为数字,是数字,如果是数字,再查ID,这样就不会出错了 --------------------编程问答-------------------- 你直接根据用户输入的数据查找数据库中的记录,如果查询到的结果为0就可以说明不存在啊 --------------------编程问答-------------------- ............................................................... --------------------编程问答-------------------- 太複雜的,誰幫完成。















…… --------------------编程问答-------------------- 唉。。。。

试试这个吧,本身就没有挑战性问题

If UCase(Me.txtUser) = "ADMIN" Then 
Set Rst = CurrentDb.OpenRecordset("select * from tblAdmin Where UserName='" & Me.txtUser & "'") 
ElseIf IsNumeric(Trim(Me.txtUser)) then
Set Rst = CurrentDb.OpenRecordset("select * from tblAdmin Where id=" & Me.txtUser)
else
msgbox "用户名不存在,请重新输入!"
txtUser.setfocus
exit sub
End If

--------------------编程问答-------------------- 当用户输入0的时候,是不会出错的,数据库的ID字段也是数字型,只是记录找不到而已,你上面的程序已有了判断的方法了 --------------------编程问答-------------------- …… --------------------编程问答-------------------- 呵呵,难道错了? --------------------编程问答-------------------- 没遇到过这种情况.
补充:VB ,  VBA
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,