公共窗体模块代码
Public Function getrs(ByVal strquery As String) As ADODB.Recordset
Dim rs As New ADODB.Recordset
Dim conn As New ADODB.Connection
On Error GoTo getrs_error
conn.ConnectionString = "provider=microsoft.jet.4.0;data source=E:\毕业设计\设计\毕业设计软件\考勤系统.mdb"
conn.Open
rs.Open Trim(strquely), conn, adOpenKeyset, adLockOptimistic
Set getrs = rs
getrs_exit:
Set rs = Nothing
Set conn = Nothing
Exit Function
getrs_error:
MsgBox (Err.Description)
Resume getrs_exit
End Function
Public Sub executesql(ByVal strcmd As String)
Dim conn As New ADODB.Connection
On Error GoTo executesql_error
conn.ConnectionString = "provider=microsoft.jet.4.0;data source=E:\毕业设计\设计\毕业设计软件\考勤系统.mdb"
conn.Open
conn.Execute Trim(strcmd)
Set executesql = rs
executesql_exit:
Set conn = Nothing
Exit Sub
executesql_error:
MsgBox (Err.Description)
Resume executesql_exit
End Sub
窗体模块代码Private Sub cmdADD_Click()
Dim rs As New ADODB.Recordset
If Len(txtname.Text) = 0 Then
MsgBox "课程名称不能为空!", vbInformation + vbOKOnly, "提示"
txtname.SetFocus
Exit Sub
End If
If Len(txtid.Text) = 0 Then
MsgBox "课程编号不能为空!", vbInformation + vbOKOnly, "提示"
txtid.SetFocus
Exit Sub
End If
If Len(txttea.Text) = 0 Then
MsgBox "课程教师不能为空!", vbInformation + vbOKOnly, "提示"
txttea.SetFocus
Exit Sub
End If
strsql = "select*from 课程信息表 where 课程编号='" & Trim(txtname.Text) & "'"
Set rs = getrs(strsql)
If rs.RecordCount > 0 Then --- 《调试显示错误在这里》
MsgBox "该课程编号已存在!", vbInformation, "提示"
Else
rs.AddNew
rs("课程名称").Value = txtname.Text
rs("课程编号").Value = txtid.Text
rs("课程教师").Value = txttea.Text
rs("课程地点").Value = txtpla.Text
rs("授课时间").Value = txttime.Text
rs.Update
MsgBox "添加", vbInformation, "提示"
End If
rs.Close
Set rs = Nothing
End Sub
这是一个像ACCESS数据库输入数据的窗体。整个程序到此就做不下去了,自己思考了今天,没办法了。各位大师谁能帮我看看到底问题出在哪里。不胜感激。

解决方案 »

  1.   

    3704
    0x800A0E78
     如果对象关闭,则不允许应用程序请求的操作。 去掉getrs(strsql)中出错处理,然后调试。
      

  2.   


    rs.Open Trim(strquely), conn, adOpenKeyset, adLockOptimistic
    Set getrs = rs
    -------------Exit Function
    getrs_exit:
    Set rs = Nothing
    Set conn = Nothing
    Exit Functiongetrs_error:
    MsgBox (Err.Description)
    Resume getrs_exitEnd Function仔细看看逻辑!
      

  3.   

    上面两位的建议都认真去试了一下。结果还是一样的,问题解决不了。
    会不会是这句话出现了问题:strsql = "select*from 课程信息表 where 课程编号='" & Trim(txtname.Text) & "'"
      

  4.   

    把Set rs = Nothing去掉
      

  5.   

    去掉函数中的
    Set getrs = rs
    getrs_exit:
    Set rs = Nothing
    Set conn = Nothing
       '此处对象关闭了,肯定报错!再去掉
    Set rs = getrs(strsql)
    试一下
      

  6.   

    Dim rs As New ADODB.Recordset
    Dim conn As New ADODB.Connection把上面的改成
    public  rs As New ADODB.Recordset
    public conn As New ADODB.Connection
    省的每次定义
      

  7.   

    有个问题。在调试显示“适时错误3704,对象关闭时,不容许操作”之前。先提示了“未找到提供程序,该程序可能未正确安装。”ACCESS是win7 系统自带的,是ACCESS软件没装好会造成3704错误吗