MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


4 participantes

    [Resolvido]Access - VBA > Como chamar Stored Procedure do Mysql.

    marcos_novack
    marcos_novack
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 72
    Registrado : 19/01/2011

    [Resolvido]Access - VBA > Como chamar  Stored Procedure do Mysql. Empty [Resolvido]Access - VBA > Como chamar Stored Procedure do Mysql.

    Mensagem  marcos_novack 22/6/2019, 20:02

    Olá Pessoal

    Tenho uma duvida, qual jeito certo de chamar uma Stored Procedure no código VBA.

    Estou usando assim:

    Código:
    Set rs = Cn.Execute("Call inc.Relatorio_ProgMalha_Ref('" & Me.semanainicial & "')") 'Mysql

    obrigado
    marcelo3092
    marcelo3092
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 294
    Registrado : 19/08/2010

    [Resolvido]Access - VBA > Como chamar  Stored Procedure do Mysql. Empty Re: [Resolvido]Access - VBA > Como chamar Stored Procedure do Mysql.

    Mensagem  marcelo3092 22/6/2019, 23:46

    Ola amigo boa noite eu chamo assim.

    Abro a conexão e coloco a proc no parametro dentro de uma function

    Código:
    Public Function Carrega_Mensagens()

    'Linha = Me.Lista_Mensagem.ListIndex + 1

    'Me.Texto51 = Me.Lista_Mensagem.Column(1, Linha)

    Razao = DLookup("Razao_Social", "temp_cliente_login")
    Cod = DLookup("Cod_Cliente", "temp_cliente_login")
    DateM = Format(Me.Texto51, "yyyy-mm-dd")

    sSQL = "CAll sp_Chat_Carrega_Mensagens(" & Cod & " , '" & DateM & "')"
    Conexao_Open (sSQL)

    Set Me.Lista_Mensagem.Recordset = rs
    Me.Lista_Mensagem.Requery

    rs.Close
    Set rs = Nothing
    End Function



    a proc e essa

    Código:
    CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_Chat_Carrega_Mensagens`(IN p_cod_cliente int(11), IN p_data_mensagem date)
    BEGIN
    Select
    `Status`,
    Mensagem,
    Data_Mensagem,
    Cod_Cliente,
    Razao_Social,
    Cod_Mensagem,
    Data_Retorno,
    Hora,
    Empresa_Visualizado,
    Primeiro_Nome,
    Cliente_Visualizado

    From Chat
    Where
    cod_cliente = p_cod_cliente AND Data_Mensagem BETWEEN p_data_mensagem AND p_data_mensagem order by Hora Desc ;

    end


    e a conexao open

    Código:
    Public Function Conexao_Open(csql)

    On Error GoTo meuerro

       Call MySQL_Server    'Carrega parametros do servidor


      If cn.State = 1 Then
          cn.Close
      End If

      If rs.State = 1 Then
           cn.Close
      End If
     

    'cn.Open "driver={MySQL ODBC 5.3 Unicode driver};server=" & MyslqServidor & ";database=" & MyslqDatabase & ";uid=" & MyslqUsuario & "; pwd=" & MyslqSenha
       cn.Open "driver={" & MyslqDriver & "};server=" & MyslqServidor & ";database=" & MyslqDatabase & ";uid=" & MyslqUsuario & "; pwd=" & MyslqSenha
       rs.CursorLocation = adUseClient
       rs.Open csql, cn, adOpenDynamic, adLockOptimistic

    meuerro:
    If Err.Number = 80004005 Then
    MsgBox " Não há Conexão com a Internet"
    End If

    End Function


    Espero ter ajudado
    marcos_novack
    marcos_novack
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 72
    Registrado : 19/01/2011

    [Resolvido]Access - VBA > Como chamar  Stored Procedure do Mysql. Empty Re: [Resolvido]Access - VBA > Como chamar Stored Procedure do Mysql.

    Mensagem  marcos_novack 17/7/2019, 22:53

    Boa Noite Marcelo

    Perdão pela demora no retorno, fiz algumas pesquisa no Google e no site do Macoratti encontrei o que precisava:
    macoratti.net/dao_ado2.htm
    [Resolvido]Access - VBA > Como chamar  Stored Procedure do Mysql. 0links10

    Uma explicação sobre abrir um Record set com método execute os dados são somente leitura, e com open posso alterá-los.

    Minha duvida era se tinha um método diferente para chamar as Stored Procedures, como eu uso somente para carregar as listbox dos forms e relatórios esta ok.

    Estou satisfeito e agradeço por postar seu exemplo com método open Marcelo.

    ...............Agora se tiver algum mestre que quiser dar um pitaco, estamos aqui para aprender

    abraço.
    Avelino João
    Avelino João
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Angola
    Mensagens : 316
    Registrado : 10/03/2012

    [Resolvido]Access - VBA > Como chamar  Stored Procedure do Mysql. Empty Re: [Resolvido]Access - VBA > Como chamar Stored Procedure do Mysql.

    Mensagem  Avelino João 21/7/2019, 15:08

    Vou deixar aqui um exemplo sobre como eu trabalho com stored procedure, nesse exemplo faço o preenchimento de lisbox.

    Código:

    Function Fluxo_Caixa()
    Dim cmd As New ADODB.Command
    Dim cn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    On Error Resume Next

            If sErr = -1 Then    'Habilita tratamento de erro
          
        End If


        If cn.State = 1 Then    'verificar o status do banco de dados. Se aberto fecha a conexão
            cn.Close
        End If
      

        If rs.State = 1 Then    'verificar o status do recordeset. Se aberto fecha a conexão
            rs.Close
        End If
     
     Set cn = New ADODB.Connection

     With cn
     Call MySQL_Server    'Carrega parametros do servidor
        .ConnectionString = "Driver={MySQL ODBC 5.1 Driver};Server=" & MyslqServidor & ";Database=" & MyslqDatabase & ";User=" & MyslqUsuario & ";Password=" & MyslqSenha & ";Port=" & MyslqPorta & ";Option=3;"
    .Open

       End With

    With cmd
            .ActiveConnection = cn
            .CommandType = adCmdStoredProc
            .Parameters.Append cmd.CreateParameter("@inicio", adDate, adParamInput, , Me.inicio)
            .Parameters.Append cmd.CreateParameter("@fim", adDate, adParamInput, , Me.fim)
            .Parameters.Append cmd.CreateParameter("@pesquisa", adVarChar, adParamInput, 20, Me.Tx2)
            .CommandText = "Movimento"
        End With
        
        With rs
            .CursorLocation = adUseClient
            .Open cmd, CursorType:=adOpenStatic, _
            Options:=adCmdStoredProc
            Set .ActiveConnection = Nothing
        End With

    'Define a propriedade tipo de origem da linha como Lista de Valores.
    Me.Lista.RowSourceType = "Value List"

    'Limpa a origem da linha da listbox.
    Me.Lista.RowSource = ""

    'Define a propriedade número de colunas = 1 coluna.
    Me.Lista.ColumnCount = 11

    'Define a propriedade coluna acoplada = 1 (cujo valores serão utilizados como valor do controle).
    Me.Lista.BoundColumn = 1

    'Define apenas um valor na propriedade largura das colunas, haja vista ter declarado acima apenas 1
    'como número de colunas.
    Me.Lista.ColumnWidths = "0cm;8cm;2cm;3cm;3cm;3cm;0cm;0cm;0cm;0cm;0cm"


    'Move para o inicio do recordset
    rs.MoveFirst


    'Utiliza a instrução with para agir em cima da ListBox, a cada laço, utiliza o método AddItem para preencher as linhas do controle
    With rs
        With Me.Lista
            Do
          
     Me.Lista.AddItem rs.Fields("idmovimento") & ";" & (rs.Fields("historico") & ";" & rs.Fields("DataMovimento") & ";" & rs.Fields(Format("credito", "standard")) & ";" & rs.Fields(Format("debito", "standard")) & ";" & rs.Fields(Format("saldo", "standard")) & ";" & rs.Fields("Conta") & ";" & rs.Fields("Nome") & ";" & rs.Fields("Moeda") & ";" & rs.Fields("categoria") & ";" & rs.Fields("subcategoria"))
            
            
             rs.MoveNext
              
                
            Loop Until rs.EOF
            
            
        End With
    End With

    'Atualiza a ListBox
    Me.Lista.Requery

    rs.Close
    cn.Close

    Set rs = Nothing
    Set cn = Nothing
    End Function


    .................................................................................
    Proaccess - Angola
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7919
    Registrado : 15/03/2013

    [Resolvido]Access - VBA > Como chamar  Stored Procedure do Mysql. Empty Re: [Resolvido]Access - VBA > Como chamar Stored Procedure do Mysql.

    Mensagem  Alvaro Teixeira 21/7/2019, 15:58

    Olá a todos,

    João Avelino, obrigado pela partilha, o fórum agradece.

    Abraço a todos

    Conteúdo patrocinado


    [Resolvido]Access - VBA > Como chamar  Stored Procedure do Mysql. Empty Re: [Resolvido]Access - VBA > Como chamar Stored Procedure do Mysql.

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 27/4/2024, 04:18