Public Function ExcuteSQL(sql As String) As ADODB.Recordset
   Dim mycommection As Connection
   Dim myrecordset As Recordset
 '连接数据库
   Set myconnection = New Connection
   Set myrecordset = New Recordset
   mypath = App.Path & "\mis.mdb"
   myconnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & mypath
   myrecordset.CursorLocation = adUseClient
   myrecordset.Open sql, myconnection, adOpenKeyset, adLockOptimistic
   Set ExcuteSQL = myrecordset
   Set mycommection = Nothing
   Set myrecordset = Nothing
End FunctionPrivate Sub cmdok_Click()
Dim sql As String
Dim myrecordset As ADODB.Recordset
spl = "select * from communication"
Set myrecordset = ExcuteSQL(sql)
Set DataGrid1.DataSource = myrecordset
       DataGrid1.Refresh
End Sub当程序运行到:
myrecordset.Open sql, myconnection, adOpenKeyset, adLockOptimistic
句时出错,
错误提示:没有为命令对象设置命令。
请各位大虾指点,不胜感激!

解决方案 »

  1.   

    Dim mycommection As Connection
       Dim myrecordset As Recordset
     '连接数据库
       Set myconnection = New Connection
       Set myrecordset = New Recordset以上改成
    dim mycommection as adodb.connection
    Dim myrecordset As adodb.Recordset
      

  2.   

    你的变量mycommection 拼写有错误,改正就可以了有的地方是mycommection 有的地方是myconnection更正如下:
    Public Function ExcuteSQL(sql As String) As ADODB.Recordset
       Dim myconnection As Connection
       Dim myrecordset As Recordset
     '连接数据库
       Set myconnection = New Connection
       Set myrecordset = New Recordset
       mypath = App.Path & "\mis.mdb"
       myconnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=" & mypath
       myrecordset.CursorLocation = adUseClient
       myrecordset.Open sql, myconnection, adOpenKeyset, adLockOptimistic
       Set ExcuteSQL = myrecordset
       Set myconnection = Nothing
       Set myrecordset = Nothing
    End FunctionPrivate Sub cmdok_Click()
    Dim sql As String
    Dim myrecordset As ADODB.Recordset
    spl = "select * from communication"
    Set myrecordset = ExcuteSQL(sql)
    Set DataGrid1.DataSource = myrecordset
           DataGrid1.Refresh
    End Sub
      

  3.   

    Option Explicit
    Private conn As adodb.Connection
    Private rs As adodb.RecordsetPrivate Function ExcuteSQL(sql As String) As adodb.Recordset
    Dim apppath As String
    Dim DbFileName As String
    Dim ConnectString As String
    Dim i As Integer
    Set conn = New adodb.Connection
    If Right(App.Path, 1) = "\" Then
                    apppath = App.Path
            Else
                    apppath = App.Path & "\"
    End If
    DbFileName = apppath & "article.mdb"
    ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
                    DbFileName & ";Persist Security Info=False;"
                    
                    On Error Resume Next
                    With conn
                            .CursorLocation = adUseClient
                            .Open ConnectString
                    End With
       
       Set rs = New adodb.Recordset
       rs.Open sql, conn, 1, 3
        If rs.EOF Then
            Exit Function
        End If
        Set ExcuteSQL = rs
    End FunctionPrivate Sub Command1_Click()
    Dim sql As String
    sql = "select id,mc from mz"
     Set DataGrid1.DataSource = ExcuteSQL(sql)
     DataGrid1.Refresh
    End Sub