代码如下,我想实现的是用数据库添加部门,但在测试时出现即使没有输入内容也会添加部门成功,所以我在添加部门代码之前
加上了判断语句,如下红色代码所示。但是出现提示信息之后,输入焦点并没有回到text1,恳请赐教。
Private Sub Command1_Click()
Dim mrc As New ADODB.Recordset
Dim txtsql As String
Dim msgtext As String
Dim sign As Integer
Dim cn As New ADODB.Connection
If Text1.Text = "" Or Text2.Text = "" Then
MsgBox "部门编号和部门名称都必须填写", vbOKOnly, "提示"
Text1.SetFocus
End If

cn.Open ConnectionString
txtsql = " select * from 部门表 where 部门名称='" & Text1.Text & "' or 部门编号='" & Text2.Text & "'"
If mrc.State <> adStateClosed Then mrc.Close
mrc.Open txtsql, cn, adOpenKeyset, adLockReadOnly
If mrc.RecordCount > 0 Then
    MsgBox "输入的部门名称或部门编号已经存在,请重新输入!", 48, "提示"
    mrc.Close
    Exit Sub
Else
    txtsql = " insert into 部门表(部门名称,部门编号) values('" & Text1.Text & "','" & Text2.Text & "')"
    If MsgBox("您确定添加该部门?", vbYesNo, "提示") = vbYes Then
    cn.Execute txtsql
    MsgBox "添加新部门成功!"
    Unload Me
    frmMain.Show
    Else
    Unload Me
    End If
End If
mrc.Close
End Sub

解决方案 »

  1.   

    If Text1.Text = "" Or Text2.Text = "" Then 
    MsgBox "部门编号和部门名称都必须填写", vbOKOnly, "提示" 
    Text1.SetFocus 
    End If 
    在end if 前添加exit  subIf trim(Text1.Text) = "" Or trim(Text2.Text) = "" Then 
    MsgBox "部门编号和部门名称都必须填写", vbOKOnly, "提示" 
    Text1.SetFocus 
    exit sub
    End If 
      

  2.   

    嗯,这个方法不错,解决问题了。谢谢
    但是我想知道我的代码为什么不能实现这个功能呢,还有加上 exit sub 为什么就能实现功能呢?
    恳请赐教~~~~
      

  3.   

    我知道exit sub是退出 子过程的意思,但在这里它哪个子过程,为什么聚焦到Text1呢?
      

  4.   

    If Text1.Text = "" Or Text2.Text = "" Then 
    MsgBox "部门编号和部门名称都必须填写", vbOKOnly, "提示" 
    Text1.SetFocus 
    End If 都是在command_click过程里面。你在做上面判断的时候。如果不符合条件。你还是在继续执行下面的过程
    cn.Open ConnectionString 
    txtsql = " select * from 部门表 where 部门名称='" & Text1.Text & "' or 部门编号='" & Text2.Text & "'" 
    If mrc.State <> adStateClosed Then mrc.Close 
    mrc.Open txtsql, cn, adOpenKeyset, adLockReadOnly 
    If mrc.RecordCount > 0 Then 
        MsgBox "输入的部门名称或部门编号已经存在,请重新输入!", 48, "提示" 
        mrc.Close 
        Exit Sub 
    Else 
        txtsql = " insert into 部门表(部门名称,部门编号) values('" & Text1.Text & "','" & Text2.Text & "')" 
        If MsgBox("您确定添加该部门?", vbYesNo, "提示") = vbYes Then 
        cn.Execute txtsql 
        MsgBox "添加新部门成功!" 
        Unload Me 
        frmMain.Show 
        Else 
        Unload Me 
        End If 
    End If 
    mrc.Close 
    加exit sub就是在判断为空的时候就退出command_click这个过程。不执行此过程
      

  5.   

    If Text1.Text = "" Or Text2.Text = "" Then 
    MsgBox "部门编号和部门名称都必须填写", vbOKOnly, "提示" 
    Text1.SetFocus 
    End If 都是在command_click过程里面。你在做上面判断的时候。如果不符合条件。你还是在继续执行下面的过程
    cn.Open ConnectionString 
    txtsql = " select * from 部门表 where 部门名称='" & Text1.Text & "' or 部门编号='" & Text2.Text & "'" 
    If mrc.State <> adStateClosed Then mrc.Close 
    mrc.Open txtsql, cn, adOpenKeyset, adLockReadOnly 
    If mrc.RecordCount > 0 Then 
        MsgBox "输入的部门名称或部门编号已经存在,请重新输入!", 48, "提示" 
        mrc.Close 
        Exit Sub 
    Else 
        txtsql = " insert into 部门表(部门名称,部门编号) values('" & Text1.Text & "','" & Text2.Text & "')" 
        If MsgBox("您确定添加该部门?", vbYesNo, "提示") = vbYes Then 
        cn.Execute txtsql 
        MsgBox "添加新部门成功!" 
        Unload Me 
        frmMain.Show 
        Else 
        Unload Me 
        End If 
    End If 
    mrc.Close 
    加exit sub就是在判断为空的时候就退出command_click这个过程。不执行此过程