Dim rstQ As New ADODB.Recordset
    Dim cmdQ As New ADODB.Command
    
    
    
    Dim parQ As New ADODB.Parameter
    Dim parQ1 As New ADODB.Parameter
    Dim parQ2 As New ADODB.Parameter
    Dim parQ3 As New ADODB.Parameter
    
    Dim strName As String, strCard As String
    
    If txtName.Text <> "" Then
        strName = txtName.Text
    Else
        strName = "%"
    End If
    
    If txtID.Text <> "" Then
        strCard = txtID.Text
    Else
        strCard = "%"
    End If
    
    Set cmdQ.ActiveConnection = cnnMain
    cmdQ.CommandText = "sp_guestinfo"
    cmdQ.CommandType = adCmdStoredProc
    parQ.Type = adVarChar
    parQ.Direction = adParamInput
    parQ.Size = 10
    parQ.Value = strName
    
    
    cmdQ.Parameters.Append parQ
    
    parQ1.Type = adChar
    parQ1.Direction = adParamInput
    parQ1.Size = 16
    parQ1.Value = strCard
    
    
    cmdQ.Parameters.Append parQ1
    
    parQ2.Type = adDBTimeStamp
    parQ2.Direction = adParamInput
    parQ2.Size = 10
    parQ2.Value = dtpFrom.Value
    
    cmdQ.Parameters.Append parQ2
    
    parQ3.Type = adDBTimeStamp
    parQ3.Direction = adParamInput
    parQ3.Size = 10
    parQ3.Value = dtpTo.Value
    
    
    cmdQ.Parameters.Append parQ3
    
    Set rstQ = cmdQ.Execute
    Set adoGuest.Recordset = rstQ
    
    adoGuest.Refresh
    执行到最后一条语句就报错了!但我看到结果已经正确返回来了!

解决方案 »

  1.   

    可我得把结果在datagrid中显示出来呀,老兄帮帮我
      

  2.   

    RecordSource 改变时用Refresh,此时直接Set DataGrid1.DataSource = Adodc1
    就可以了,同时要注意设置DataGrid1的Columns与返回字段的匹配,否则在DataGrid1中没有记录显示
      

  3.   

    我试过了,还是不行,
    报7004错误,the rowset is not bookable
      

  4.   

    这个问题我遇见过
    对Rstq的set改为
    Rstq.CursorLocation = adUseClient
    rstq.Open cmdq, , adOpenDynamic, adLockOptimistic, adCmdStoredProc
      

  5.   

    将rstq改为
    Rstq.CursorLocation = adUseClient
    Rstq.Open cmdq, , adOpenDynamic, adLockOptimistic, adCmdStoredProc