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


    [Resolvido]Integrador entre bases de dados diferentes

    avatar
    onfire
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 38
    Registrado : 18/09/2016

    [Resolvido]Integrador entre bases de dados diferentes Empty [Resolvido]Integrador entre bases de dados diferentes

    Mensagem  onfire 18/5/2023, 11:15

    Exmos
    Tenho um programa de controlo bancário.
    Não fazia sentido posteriormente ir ao programa de gestão fazer novamente os registos. É uma duplicação de trabalho e uma perca de tempo que já se arrasta à algum tempo.
    No entanto na base de dados de controlo bancário, o cliente está com chave primária ID numéricos, e na base de dados do programa de gestão está a usar descrições completas como ID.
    Então surge a necessidade de criar uma tabela de equivalências entre as duas bases de dados, para que possa integrar na segunda (com localização diferente) de forma dinâmica sem estar a criar select case em código vba.
    Deixo abaixo o código que está ser utilizado.
    A ajuda que necessito é para criar uma tabela na base de dados bancária (esta parte sei), utilizando algo idêntico ao procv do Excel, faça essa alteração no insert.

    Código:
    Private Sub Integrador()
     
     ' Declarando as variáveis necessárias
        Dim db As DAO.Database
        Dim strSQL As String
        Dim Cliente As Integer
        Dim Data As Date
        Dim Quantia As Currency
        Dim Mont As Currency
        
        ' Obtendo o valor do campo de formulário
        Cliente = Me.CaixaCombinação14.Value
        Data = Me.DataMov.Value
        Mont = Me.Montante.Value
        Quantia = Mont * -1
        'Observacoes = Me.CaixaCombinação17.Value
        
        ' Abrindo a conexão à base de dados da gestão
        Set db = DAO.OpenDatabase("C:\nuvem\OneDrive\Documentos\....\v5_be.accdb")
        
        ' Criando a consulta SQL para a inserção de dados no programa de gestão
        
        Select Case Cliente
        
        Case 648 'Nesta base de dados o indice 648 vai integrar na outra base de dados
                      
        strSQL = "INSERT INTO Movimentos (Data, Montante, Cliente, Descrição, Tipo, Forma) " & _
                 "VALUES (#" & Format(Data, "yyyy-mm-dd") & "#, " & Quantia & ", 'Miguel Afonso', 'Recibo', 'Recebimentos', 'Caixa Agricola 798521')"
                
        Case 57 'Nesta base de dados o indice 57 vai integrar na outra base de dados
                      
        strSQL = "INSERT INTO Movimentos (Data, Montante, Cliente, Descrição, Tipo, Forma) " & _
                 "VALUES (#" & Format(Data, "yyyy-mm-dd") & "#, " & Quantia & ", 'João Pedro', 'Recibo', 'Recebimentos', 'Caixa Agricola 798521')"
                
        'Se tiver 50 indivíduos isto deixa de fazer sentido porque não está dinâmico. Deveria aplicar algo como um procv numa tabela que faça a equivalência entre as duas bases de dados.  
            
        Case Else
        
        MsgBox "Este cliente não está definido no integrador!"
        
        Exit Sub
        
        End Select
        
            
        ' Executando a consulta SQL
        
        db.Execute strSQL
        
        ' Fechando a conexão com o banco de dados
        db.Close
        
        ' Limpando a memória
        Set db = Nothing
        
        ' Exibindo uma mensagem de sucesso
        MsgBox "Dados integrados com sucesso na contabilidade de gestão!"
        
      
          
        End Sub
    avatar
    onfire
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 38
    Registrado : 18/09/2016

    [Resolvido]Integrador entre bases de dados diferentes Empty Re: [Resolvido]Integrador entre bases de dados diferentes

    Mensagem  onfire 21/5/2023, 22:08

    Criei a tabela e apliquei o Dlookup
    Espero que ajude outros na mesma situação.



    Código:
    Private Sub Integrador()
     
     ' Declarando as variáveis necessárias
        Dim db As DAO.Database
        Dim strSQL As String
        Dim Cliente As Integer
        Dim Data As Date
        Dim Quantia As Currency
        Dim Mont As Currency
        Dim Cliente_Gestao As String
        Dim Validar As String
        
        ' Obtendo o valor do campo de formulário
        Cliente = Me.CaixaCombinação14.Value
        Data = Me.DataMov.Value
        Mont = Me.Montante.Value
        Quantia = Mont * -1
        'Observacoes = Me.CaixaCombinação17.Value
        
        ' Abrindo a conexão com o banco de dados
        Set db = DAO.OpenDatabase("C:\nuvem\OneDrive\Documentos\....\v5_be.accdb")
        
        ' Criando a consulta SQL para a inserção de dados
        
          
        
        Cliente_Gestao = Nz(DLookup("Nome_Gestao", "Tab_Equiv_Clientes", "ID=" & Cliente), "não está na Lista")
        
          
        'Se não estiver não avanço com o integrador.
        If MsgBox("O Cliente " & Cliente_Gestao & " é para Integrar?", vbYesNo, Me.Caption) = vbNo Then
    MsgBox "Cancelaste o processo de Integração", vbInformation, Me.Caption
    Exit Sub
    Else

        strSQL = "INSERT INTO Movimentos (Data, Montante, Cliente, Descrição, Tipo, Forma) " & _
                 "VALUES (#" & Format(Data, "yyyy-mm-dd") & "#, " & Quantia & ", " & Cliente_Gestao & ", 'Recibo', 'Recebimentos', 'Caixa Agricola 798521')"
        
        
           ' Executando a consulta SQL
        
        db.Execute strSQL
        
        ' Fechando a conexão com o banco de dados
        db.Close
        
        ' Limpando a memória
        Set db = Nothing
        
                  
        ' Exibindo uma mensagem de sucesso
        MsgBox "Dados integrados com sucesso na contabilidade de gestão!"
          

    End If
    End Sub

      Data/hora atual: 14/5/2024, 19:51