none
Atribuindo recorsdet (stored procedure) a um form Access RRS feed

  • Pergunta

  • Estou tentando atribuir ao recordset de um form Access, porém apesar do recordset retornar registros, ao tentar setar o recordset do form, aparece o seguinte erro:

    If Me.mol_Filtro.Value = 1 Then 'Todos
            Set rs = sp_pesquisaEmpregado(1, "")
        ElseIf Me.mol_Filtro.Value = 2 Then 'nome
            Set rs = sp_pesquisaEmpregado(2, Trim(Me.txt_Filtrar))
        ElseIf Me.mol_Filtro.Value = 3 Then 'CPF
            Set rs = sp_pesquisaEmpregado(3, Trim(Me.txt_Filtrar))
        End If
        
        Set Form_frm_EmpregadosLista_Frame.Recordset = rs
    Public Function sp_pesquisaEmpregado(iPesquisa As Integer, parPesquisa As String) As ADODB.Recordset
    On Error GoTo Err_sp_pesquisaEmpregado
    Dim cn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim cmd As New ADODB.Command
    
        Set cn = CurrentProject.Connection
            cn.CursorLocation = adUseServer
    
        With cmd
            .ActiveConnection = cn
            .CommandType = adCmdStoredProc
            If iPesquisa = 1 Then
                .CommandText = "sp_PesquisaEmpregadoTODOS"
            ElseIf iPesquisa = 2 Then
                .Parameters.Append cmd.CreateParameter("@nomeEmpregado", adVarChar, adParamInput, 100, parPesquisa)
                .CommandText = "sp_PesquisaEmpregadoNOME"
            ElseIf iPesquisa = 3 Then
                .Parameters.Append cmd.CreateParameter("@CPF", adInteger, adParamInput, 14, Replace(Replace(parPesquisa, ".", ""), "-", ""))
                .CommandText = "sp_PesquisaEmpregadoCPF"
            End If
        End With
        
        With rs
            .CursorLocation = adUseClient
            .Open cmd, CursorType:=adOpenKeyset, _
            LockType:=adLockReadOnly, _
            Options:=adCmdStoredProc
            Set .ActiveConnection = Nothing
        End With
        
        Set rs = cmd.Execute
        Set sp_pesquisaEmpregado = rs
    
        Set cn = Nothing



    [b]Sergio Ivanenko[/b]





    • Editado Ivanenko quarta-feira, 1 de agosto de 2012 23:13
    quarta-feira, 1 de agosto de 2012 19:40

Respostas

  • Falha minha.

    Eu já tinha aberto o recordset, não precisava executar o comando: 

    Set rs = cmd.Execute


    [b]Sergio Ivanenko[/b]

    • Marcado como Resposta Ivanenko quinta-feira, 2 de agosto de 2012 18:53
    quinta-feira, 2 de agosto de 2012 18:52