Private Sub Command1_Click(Index As Integer)Dim mrc As ADODB.Recordset
Dim MsgText As String
Dim txtSQL As String
If Not Testtxt(txtClassno.Text) Then
MsgBox "请输入班号!", vbOKOnly + vbExclamation, "警告"
txtClassno.SetFocus
Exit Sub
End If
If Not Testtxt(ComboGrade.Text) Then
MsgBox "请选择年级!", vbOKOnly + vbExclamation, "警告"
ComboGrade.SetFocus
Exit Sub
End If
If Not Testtxt(txtDirector.Text) Then
MsgBox "请输入班主任姓名!", vbOKOnly + vbExclamation, "警告"
txtDirector.SetFocus
Exit Sub
End If
If Not Testtxt(txtClassroom.Text) Then
MsgBox "请输入教室房间号!", vbOKOnly + vbExclamation, "警告"
txtClassroom.SetFocus
Exit Sub
End If
If Not IsNumeric(Trim(txtClassno.Text)) Then
MsgBox "请输入数字!", vbOKOnly + vbExclamation, "警告"
Exit Sub
txtClassno.SetFocus
End If
txtSQL = "select * from class_Info"
Set mrc = ExecuteSQL(txtSQL, MsgText)mrc.MoveFirstWhile (mrc.EOF = False)
If (Trim(mrc.Fields(0)) = Trim(txtClassno.Text)) Then
MsgBox "班号已经存在,请重新输入班号!", vbOKOnly + vbExclamation, "警告"
Exit Sub
txtClassno.Text = ""
txtClassno.SetFocus
Else
mrc.MoveNext
End If
Wend
mrc.AddNew
mrc.Fields(0) = Trim(txtClassno.Text)
mrc.Fields(1) = Trim(ComboGrade.Text)
mrc.Fields(2) = Trim(txtDirector.Text)
mrc.Fields(3) = Trim(txtClassroom.Text)
mrc.Update
mrc.Close
MsgBox "添加班级信息成功!", vbOKOnly + vbExclamation, "添加班级信息"
End Sub
这段代码中的mrc.MoveFirst这句出现黄色,怎么办啊

解决方案 »

  1.   

    在VB菜单:工程->引用 里面找 Microsoft ActiveX Data Object 2.8 Library,并勾选上
      

  2.   

    勾上还是出现对象变量或With变量未设置
      

  3.   

    ExecuteSQL是另外一个自定义函数,你没写
      

  4.   

    Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset
    'executes SQL and returns Recorset
    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    Dim sTokens() As String
    On Error GoTo ExecuteSQL_Error
    sTokens = Split(SQL)
     Set conn = New ADODB.Connection
    cnn.Open ConnectString
    If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then
    cnn.Exceute SQL
    MsgString = sTokens(0) & "query successful"
    Else
    Set rst = New ADODB.Recordset
    rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic
    ' rst.MoveLast ' get RecordCount
    Set ExecuteSQL = rst
    MsgString = "查询到" & rst.RecordCount & "条记录"
    End If
    ExecutesSQL_Exit:
    Set rst = Nothing
    Set cnn = Nothing
    Exit Function
    ExecuteSQL_Error:
    MsgString = ":查询错误" & Err.Description
    Resume ExecutesSQL_Exit
    End Function
    写了你看看有什么毛病没
      

  5.   

    Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset
    'executes SQL and returns Recorset
    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    Dim sTokens() As String
    On Error GoTo ExecuteSQL_Error
    sTokens = Split(SQL)
     Set conn = New ADODB.Connection
    cnn.Open ConnectString
    If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then
    cnn.Exceute SQL
    MsgString = sTokens(0) & "query successful"
    Else
    Set rst = New ADODB.Recordset
    rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic
    ' rst.MoveLast ' get RecordCount
    Set ExecuteSQL = rst
    MsgString = "查询到" & rst.RecordCount & "条记录"
    End If
    ExecutesSQL_Exit:
    Set rst = Nothing
    Set cnn = Nothing
    Exit Function
    ExecuteSQL_Error:
    MsgString = ":查询错误" & Err.Description
    Resume ExecutesSQL_Exit
    End Function
      

  6.   

    ExecutesSQL_Exit:
    的前面加个:Exit Function
      

  7.   

    mrc里为空时不能用mrc.MoveFirst
    应该断断一下 if not mrc.eof then mrc.movefirst
      

  8.   

    简单的东西给你写的这么复杂 ,ConnectString  里是咋写的 估计你压根就没连上数据库吧
      

  9.   

    Public Function ConnectString() As String
    '返回一个数据库连接
    ConnectString = "FileDSN=studentinfo.dsn;UID=sa;PWD="
    End Function
    写了啊
      

  10.   

    mrc值是否为Nothing,已经添加判断
    楼主应该学会调试程序,设置断点,看看具体是那句出的错误;数据库是否正常连接,执行Sql语句是否正确返回...