MaximoAccess

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

Obrigado

Administração do MaximoAccess

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


    Atualizar tabela pelo excel via VBA com critérios

    avatar
    pvicente2017
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3
    Registrado : 27/02/2018

    Atualizar tabela pelo excel via VBA com critérios Empty Atualizar tabela pelo excel via VBA com critérios

    Mensagem  pvicente2017 em 22/10/2019, 15:51

    Olá, tenho uma tabela básica com nome do escritório (cliente), CNPJ e data do movimento. Preciso atualizar esta tabela, pois os nomes foram cadastrados com divergência ao longo do tempo; então fiz um Excel com os dados corretos: Nome antigo = do access, Nome Novo (atualizado) e CNPJ (atualizado). Ao atualizar pelo VBA deu estouro, acho que foi devido ao tamanho da tabela. Então pensei em fracionar a atualização por data, porque a tabela possui campo data e pensei em fazer mês a mês de 1 a 12, porém não consegui colocar isso no código.

    ----------------------------------------------------------
    Private Sub alterar()
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Application.ScreenUpdating = False
    Set cn = New ADODB.Connection
    Set rs = New ADODB.Recordset
    'Conectando com o Banco

    pass = "CDI_BSDD"
    Caminho = "C:\Users\pvicente\Desktop\"
    banco = "BASE_PGTO_be.accdb"
    strDB = Caminho & banco

    With cn
    .ConnectionString = "Provider=Microsoft.ACE.OLEDB.16.0; Data Source=" & strDB & ";Jet OLEDB:Database Password=CDI_BSDD;"
    .CursorLocation = adUseClient
    .Open
    End With

    With Sheets("Base")
    For i = 2 To Application.WorksheetFunction.CountA(Sheets("BASE").Range("A:A"))

    NomeAntigo = .Cells(i, 1).Value
    Novonome = .Cells(i, 3).Value
    cnpj = .Cells(i, 2).Value

    sSQL = ""
    sSQL = sSQL & "UPDATE Control_Pgto_Novo SET Control_Pgto_Novo.Escritorio ='" & Novonome & "', Control_Pgto_Novo.CNPJ = '" & cnpj & "'" & Chr(13)
    sSQL = sSQL & " WHERE Control_Pgto_Novo.Escritorio='" & NomeAntigo & "'" & Chr(13)

    Set rs = cn.Execute(sSQL)

    .Cells(i, 4) = "Atualizado"
    .Cells(i, 5) = Date




    Next i
    End With
    cn.Close
    Set cn = Nothing
    Set rs = Nothing

    End Sub

    ----------------------------------------------------------
    Alguma luz?
    Maicon
    Maicon
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 176
    Registrado : 08/09/2012

    Atualizar tabela pelo excel via VBA com critérios Empty Já tentou fazer importação da Tabela

    Mensagem  Maicon em 23/10/2019, 03:47

    Creio que se importasse a tabela para dentro do banco de dados poderia ser mais rápido , uma vez dentro do banco ou vinculado a ele poderia fazer consultas acrécimo ou atualização.


    .................................................................................
    "O talento vence jogos, mas só o trabalho em equipe ganha campeonatos."
    Michael Jordan

    Bons Estudos.
    avatar
    pvicente2017
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3
    Registrado : 27/02/2018

    Atualizar tabela pelo excel via VBA com critérios Empty dúvida..

    Mensagem  pvicente2017 em 23/10/2019, 19:08

    E eu consigo atualizar tudo utilizando o critério de comparação de nomes?
    Exemplo: Se "nome_antigo" (tabela) 1 for igual "nome_antigo" (tabela 2) então escreva o "nome novo" (tabela 2) sobre o "nome antigo" (tabela 1) e também o "CPF_novo" (tabela 2) sobre o "CPF_antigo" (tabela 1).
    Maicon
    Maicon
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 176
    Registrado : 08/09/2012

    Atualizar tabela pelo excel via VBA com critérios Empty Já tentou fazer importação da Tabela

    Mensagem  Maicon em 24/10/2019, 05:00

    No próprio assistente de importação de tabelas do access dá a opção de acrescentar á tabela X. Se a tabela estiver com chave primária e tudo certo no teu caso o campo CPF os dados duplicados não irão ser acrescidos.

    Abaixo envio um exemplo de BD , que possui a tabela principal e uma importada do Excel , Abra as tabelas e observa que há dados novos e dados duplicados , ao executar a consulta verá que só os dados novos serão acrescidos e os dados antigos só irão mudar para duplicado no campo tipo porém não irá ocorrer duplicação por quê a chave primária é o CPF.

    Além disso ainda pode usar o recurso de consulta localizar duplicada.
    Anexos
    Atualizar tabela pelo excel via VBA com critérios AttachmentImportacao.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (100 Kb) Baixado 4 vez(es)


    .................................................................................
    "O talento vence jogos, mas só o trabalho em equipe ganha campeonatos."
    Michael Jordan

    Bons Estudos.
    avatar
    pvicente2017
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3
    Registrado : 27/02/2018

    Atualizar tabela pelo excel via VBA com critérios Empty Resolvido

    Mensagem  pvicente2017 em 24/10/2019, 16:49

    Funcionou! Importei a tabela para o banco conforme você sugeriu. Criei uma consulta sem coincidentes e escolhi os campos coincidentes, depois inseri Atualização na consulta e coloquei os critérios.
    Nota 10.

    Obrigado Maicon!!!
    Maicon
    Maicon
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 176
    Registrado : 08/09/2012

    Atualizar tabela pelo excel via VBA com critérios Empty Favor marcar o tópico como resolvido.

    Mensagem  Maicon em 25/10/2019, 02:33


    OK, Marque o tópico como resolvido. O Fórum agradece


    .................................................................................
    "O talento vence jogos, mas só o trabalho em equipe ganha campeonatos."
    Michael Jordan

    Bons Estudos.

    Conteúdo patrocinado

    Atualizar tabela pelo excel via VBA com critérios Empty Re: Atualizar tabela pelo excel via VBA com critérios

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 21/11/2019, 22:43