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


2 participantes

    [Resolvido]Comando para atualizar banco de dados!

    avatar
    indicatti
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Espanha
    Mensagens : 13
    Registrado : 29/08/2016

    [Resolvido]Comando para atualizar banco de dados! Empty [Resolvido]Comando para atualizar banco de dados!

    Mensagem  indicatti 29/8/2016, 13:42

    Olá! Estou com um problema para criar um comando de atualização de um banco de dados.

    Eu tenho um banco de dados no Access com várias normas técnicas com suas respectivas datas de publicação e descrições.

    Cada norma técnica tem um nome único (não pode haver duas normas com o mesmo nome) e de tempos em tempos elas são atualizadas por uma agência. Com uma atualização, o nome da norma permanece idêntico, mas a data de sua publicação e sua descrição mudam.

    Preciso criar uma consulta/tabela com um comando/regra/critério que, ao atualizar uma norma, faça com que a norma antiga saia do banco de dados e seja substituída pela nova norma. Esse comando precisa ser automático. Não serve, por exemplo, excluir primeiro a norma antiga manualmente e em seguida inserir no banco de dados a nova norma.

    Obrigado pela atenção!
    Estou aberto a qualquer sugestão!
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Comando para atualizar banco de dados! Empty Re: [Resolvido]Comando para atualizar banco de dados!

    Mensagem  Cláudio Machado 29/8/2016, 14:24

    Bom dia.
    Quando vocês diz:

    "Não serve, por exemplo, excluir primeiro a norma antiga manualmente e em seguida inserir no banco de dados a nova norma."

    Você que que exclua automaticamente? É isso?

    Se for, é só inserir o código de exclusão abaixo e inserir a nova norma com as informações atualizadas.

    Dim strSQL As String
    strSQL = "DELETE * FROM SUA_TABELA WHERE Id_Norma = " & Id_Norma
    DoCmd.RunSQL (strSQL)

    Teste antes em outra tabela para não excluir todos os dados.

    Ou o ideal seria criar uma consulta de Atualização, assim não precisa excluir os dados, e sim, só atualizar as informações.

    Se é que eu entendi assim né.


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Comando para atualizar banco de dados! 90dssg para agradecer a dica que solucionou seu problema.
    avatar
    indicatti
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Espanha
    Mensagens : 13
    Registrado : 29/08/2016

    [Resolvido]Comando para atualizar banco de dados! Empty Re: [Resolvido]Comando para atualizar banco de dados!

    Mensagem  indicatti 30/8/2016, 09:28

    Muito obrigado pela resposta Cláudio!

    Isso mesmo! Eu quero que a norma antiga seja excluída automaticamente e substituída pela atualização.

    Eu inseri esse código de exclusão no VBA, mas quando adiciono uma noma norma pelo formulário, aparece um erro:
    " Run-time error:'3075' - Syntax error (missing operator) in query expression 'Id_Noma=' "
    Em seguida eu cliquei na opção de debug e o VBA marca a linha "DoCmd.RunSQL (strSQL)" em amarelo contendo um erro.
    Como poderia arrumar esse problema?

    Você disse que o ideal seria criar uma consulta de atualização... quais critérios eu deveria usar para criar essa consulta?

    Obs.: Não tenho muita experiência com VBA e estou aprendendo Access ainda!

    Obrigado mais uma vez pela ajuda!
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Comando para atualizar banco de dados! Empty Re: [Resolvido]Comando para atualizar banco de dados!

    Mensagem  Cláudio Machado 30/8/2016, 13:43

    Bom dia.
    Veja bem.

    Aqui você têm que mudar o campo chave para o nome que você está usando:

    Dim strSQL As String
    strSQL = "DELETE * FROM SUA_TABELA WHERE Id_Norma = " & Id_Norma
    DoCmd.RunSQL (strSQL)


    Me responda uma coisa, de que forma você atualiza esta norma?
    Se for direto pelo form onde ela está cadastrada, porquê fazer tudo isso quando qualquer alteração que fizer no registro já estará sendo alterada?

    Aguardemos...


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Comando para atualizar banco de dados! 90dssg para agradecer a dica que solucionou seu problema.
    avatar
    indicatti
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Espanha
    Mensagens : 13
    Registrado : 29/08/2016

    [Resolvido]Comando para atualizar banco de dados! Empty Re: [Resolvido]Comando para atualizar banco de dados!

    Mensagem  indicatti 31/8/2016, 10:30

    Bom dia! Obrigado pela resposta mais uma vez!

    Eu substitui o trecho Id_Norma = " & Id_Norma por NormName = " & NormName, mas o mesmo erro ainda aparece.
    NormName é o título da coluna na minha tabela que contém os nomes das normas técnicas.
    Eu coloquei esse comando no evento "ao clicar" em um botão que adicionei no formulário que criei para atualizar as normas.

    Na tabela de registros eu coloquei o nome da norma (NormName) com chave primária, para evitar repetições.

    Eu pretendo atualizar as normas por meio de um formulário. Neste formulário há três campos: Nome da norma, Data da norma e Descrição.
    Eu gostaria que ao preencher esses três campos e ao clicar em seguida em um botão no fomulário, o Access procurasse na minha tabela com todas as normas se já há alguma norma com o mesmo nome. Se existir uma norma com o mesmo nome, ele deve substituir a norma que já está salva, pela norma que acabei de digitar no formulário (atualização).

    O que pensei também em fazer é criar uma tabela com todas as normas que tenho agora e criar uma outra tabela para as atualizações futuras. E fazer das duas tabelas uma consulta união. E para evitar repetições entre os dados da tabela inicial e a tabela que contém atualizações, pensei em criar um código no modo design com SQL, porém não sei se isso é possível e não consegui até agora achar um código que fosse válido.
    O que você acha dessa ideia?

    Muito obrigado!

    avatar
    indicatti
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Espanha
    Mensagens : 13
    Registrado : 29/08/2016

    [Resolvido]Comando para atualizar banco de dados! Empty Re: [Resolvido]Comando para atualizar banco de dados!

    Mensagem  indicatti 1/9/2016, 11:10

    Bom dia Cláudio,

    eu dei uma pesquisada melhor e acredito que a melhor solução pra esse problema seja criar um código no VBA.
    Pra ser objetivo com tudo:
    O que pensei foi o seguinte:
    No formulário para atualizar o banco de dados vai haver três campos para serem preenchidos (Nome, Data e Descrição da norma).

    É preciso configurar no evento "ao clicar" em um botão no formulário um código que faz as seguintes ações:

    Se o nome da norma digitado na caixa do formulário for igual ao de alguma norma que já existe no banco de dados, a norma que já existe deve ser excluída e a que acabei de digitar deve ser adicionada.
    Se a norma digitada na caixa do formulário for diferente de qualquer norma já existente no banco de dados, ela deve ser apenas adicionada normalmente ao banco de dados.

    o que já fiz:

    Option Compare Database

    Private Sub Command6_Click()


    If txt_NormName.Value = NormName.Value Then
    ' txt_NormName é o campo que será preenchido no formulário e NormName é o nome da coluna no banco de dados com os nomes das normas
    ...
    ' Apagar norma
    Else
    ...
    ' Adcionar norma
    End If
    End Sub


    Não é muita coisa, mas estou lendo ainda como funciona o VBA e é mais pra ilustrar a estrutura que procuro. Faltam definir as variáveis e comandos. Preciso de ajuda.

    Muito obrigado!
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Comando para atualizar banco de dados! Empty Re: [Resolvido]Comando para atualizar banco de dados!

    Mensagem  Cláudio Machado 1/9/2016, 22:16

    Boa noite.

    Esquece sua penúltima postagem. Muito complicada e trabalhoso demais.

    Vamos por em prática o seu último post.

    Criei uma consulta de Seleção para filtrar a Norma que está sendo informada, assim o código verifica nesta consulta se existe ou não a norma e não precisa ler todo o banco de dados.
    Criei também uma consulta de atualização para que você entenda melhor como funciona e também se tiver que fazer alterações, fica mais fácil

    Criei um novo form e coloquei no botão atualizar dele o código abaixo:

    Estude o código e vá adaptando as suas necessidade, está bem simples.
    Código:


    'Aqui o código busca na consulta Cns_Normas se existe ou não a Norma informada
    If DLookup("NormName", "Cns_Normas") = Txt_NormName Then

    MsgBox "Norma " & Txt_NormName & " Já Existente. Vou Atualizar.", vbInformation, "Informando"

    'Se existir executa a consulta Cns_Atualiza_Norma e atualiza os dados
    DoCmd.SetWarnings False
    DoCmd.OpenQuery "Cns_Atualiza_Norma", , acEdit
    DoCmd.SetWarnings True

    MsgBox "Norma " & Txt_NormName & " Atualizada com Sucesso!", vbInformation, "Informando"

    Else
    MsgBox "Norma " & Txt_NormName & " Não Existe no Cadastro, vou adicionar.", vbInformation, "Informando"

    'Se NÂO existir executa o código abaixo e insere um novo registro na tabela tbl_NORMAS com os novos dados
    CurrentDb.Execute "INSERT INTO [tbl_NORMAS] (NormName, DataCadastro, Descrição) Values (""" & Txt_NormName & """,""" & Txt_Data & """,""" & Txt_Descrição & """)"

    MsgBox "Norma " & Txt_NormName & " Cadastrada com Sucesso!", vbInformation, "Informando"
    End If



    Resumindo, está funcionando como você quer.
    Só sugiro que melhore  a busca no banco de dados destas normas, pois se for por texto e você digitar um espaço ou letra á mais, o sistema entenderá que ela não existe e irá cadastrar como nova.

    Saudações.
    Anexos
    [Resolvido]Comando para atualizar banco de dados! AttachmentNormas_ALT.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (106 Kb) Baixado 17 vez(es)


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Comando para atualizar banco de dados! 90dssg para agradecer a dica que solucionou seu problema.
    avatar
    indicatti
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Espanha
    Mensagens : 13
    Registrado : 29/08/2016

    [Resolvido]Comando para atualizar banco de dados! Empty Re: [Resolvido]Comando para atualizar banco de dados!

    Mensagem  indicatti 3/9/2016, 22:42

    Boa tarde Cláudio!

    Eu vi aqui o arquivo que você postou e o código. Ficou espetacular! Muito obrigado pela explicação!

    Eu teria só uma última dúvida:

    Se no formulário de atualização das normas (frm_NORMAs_UPDATE) eu quisesse adicionar uma caixa de combinação (por exemplo com o nome da Editora da norma) toda vez que atualizar a norma, como eu poderia configurar isso?

    Eu segui a mesma ideia que você usou para atualizar os campos Nome, Data e Descrição na consulta de atualização (usei: [forms]!frm_NORMAS_UPDATE]![Txt_Editora]*** como critério na coluna com as Editoras), porém na tabela das normas (tbl_Normas) a atualização não acontece.
    No caso, o Access informa que atualizou a norma com sucesso (com o messagebox), mas quando verifico na tabela de banco dados, não aconteceu nenhuma mudança.
    O que preciso fazer de diferente quando quero atualizar o banco de dados quando tenho uma caixa de combinação (nesse caso para a Editora)?


    muito obrigado pela ajuda e atenção! muito obrigado mesmo! está sendo gigantesco o auxílio!

    OBS.:
    *** "Txt_Editora" é o nome da caixa de combinação no formulário para atualizar normas.
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Comando para atualizar banco de dados! Empty Re: [Resolvido]Comando para atualizar banco de dados!

    Mensagem  Cláudio Machado 5/9/2016, 14:39

    Bom dia.

    Na consulta de "Cns_Atualiza_Norma" inclua o campo Editora, em seguida ainda na consulta em baixo na opção "Atualizar para" coloque este código:

    [forms]![frm_NORMAS_UPDATE]![Txt_Editora]


    Na parte do código do botão atualizar, substitua o código existente por este:

    Código:


    CurrentDb.Execute "INSERT INTO [tbl_NORMAS] (NormName, DataCadastro, Descrição, Editora) Values (""" & Txt_NormName & """,""" & Txt_Data & """,""" & Txt_Descrição & """,""" & Txt_Editora & """)"


    Repare que acrescentei ao código de inclusão os campos: Editora e no final do código Txt_Editora.

    Toda vez que quiser incluir mais campos para neste código de inclusão faça o seguinte:

    Inclua o nome do campo da tabela primeiro e depois no final inclua o campo do formulário:

    Exemplo: ,""" & NovoCampo & """ sempre com uma vírgula antes.

    Segue exemplo anexo.

    Como eu disse antes, procure estudar o código e o funcionamento da consulta que aprenderá rápido.

    Mas se precisar é só gritar. Estamos aqui para ajudar uns aos outros.

    Saudações.
    Anexos
    [Resolvido]Comando para atualizar banco de dados! AttachmentNormas_ALT_II.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (51 Kb) Baixado 18 vez(es)


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Comando para atualizar banco de dados! 90dssg para agradecer a dica que solucionou seu problema.
    avatar
    indicatti
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Espanha
    Mensagens : 13
    Registrado : 29/08/2016

    [Resolvido]Comando para atualizar banco de dados! Empty Re: [Resolvido]Comando para atualizar banco de dados!

    Mensagem  indicatti 10/9/2016, 22:17

    Boa noite Cláudio!

    Desculpe a demora para retornar.
    Obrigado por todas as explicações e por enviar os modelos do Access! Tudo funcionando como precisava!

    Parabéns pela aplicação e prontidão para ajudar!
    Um grande abraço e muito obrigado, mais uma vez, por todo o auxílio! Show!
    avatar
    indicatti
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Espanha
    Mensagens : 13
    Registrado : 29/08/2016

    [Resolvido]Comando para atualizar banco de dados! Empty Re: [Resolvido]Comando para atualizar banco de dados!

    Mensagem  indicatti 12/9/2016, 10:25

    Olá Cláudio,

    acaba de me surgir uma dúvida em relação ao formulário para atualizar as normas.

    Quando todos os campos no formulário "frm_NORMAS_UPDATE" estão em branco, o Access apresenta a mensagem que a norma digitada (nesse caso está tudo em branco) não existe nos registros e diz que adiciona a mesma. Porém quando abro a tabela de registros, o Access não adicionou esta norma em branco.

    Como poderia colocar um aviso ou interromper o processo de armazenamento na tabela de registros quando algum dos campos (Nome, Data, Descrição ou Editora) estiverem em branco?

    Muito obrigado mais uma vez!
    Um grande abraço
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Comando para atualizar banco de dados! Empty Re: [Resolvido]Comando para atualizar banco de dados!

    Mensagem  Cláudio Machado 12/9/2016, 20:10

    Boa tarde.

    Repare que adicionei alguns IF's ao código

    Código:

    If IsNull(Me.Txt_NormName) Then ' Aqui se o Campo Nome da Norma estiver em branco exibe a Mensagem de crítica e pausa o código.
        MsgBox "Informe o nome da Norma", vbCritical, "Atenção"
    ElseIf IsNull(Me.Txt_Data) Then ' Aqui se o Campo Data da Norma estiver em branco exibe a Mensagem de crítica e pausa o código.
        MsgBox "Digite a Data da Norma", vbCritical, "Atenção"
    ElseIf IsNull(Me.Txt_Descrição) Then ' Aqui se o Campo Descrição da Norma estiver em branco exibe a Mensagem de crítica e pausa o código.
        MsgBox "Descreva a Norma", vbCritical, "Atenção"
    Else

    'Aqui o código busca na consulta se existe ou não a Norma informada
    If DLookup("NormName", "Cns_Normas") = Txt_NormName Then

    MsgBox "Norma " & Txt_NormName & " Já Existente. Vou Atualizar.", vbInformation, "Informando"

    'Se existir executa a consulta Cns_Atualiza_Norma e atualiza os dados
    DoCmd.SetWarnings False
    DoCmd.OpenQuery "Cns_Atualiza_Norma", , acEdit
    DoCmd.SetWarnings True

    MsgBox "Norma " & Txt_NormName & " Atualizada com Sucesso!", vbInformation, "Informando"

    Else
    MsgBox "Norma " & Txt_NormName & " Não Existe no Cadastro, vou adicionar.", vbInformation, "Informando"

    'Se NÂO existir executa o código abaixo e insere um novo registro na tabela tbl_NORMAS com os novos dados
    CurrentDb.Execute "INSERT INTO [tbl_NORMAS] (NormName, DataCadastro, Descrição, Editora) Values (""" & Txt_NormName & """,""" & Txt_Data & """,""" & Txt_Descrição & """,""" & Txt_Editora & """)"

    MsgBox "Norma " & Txt_NormName & " Cadastrada com Sucesso!", vbInformation, "Informando"
    End If
    End If


    Você pode acrescentar outros IF'´s se precisar, basta inserir:

    ElseIf IsNull(Me.NomeDoCampo) Then
       MsgBox "Informe os dados do Campo Tal", vbCritical, "Atenção"
    Else

    E assim por diante.

    Abraços.
    avatar
    indicatti
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Espanha
    Mensagens : 13
    Registrado : 29/08/2016

    [Resolvido]Comando para atualizar banco de dados! Empty Re: [Resolvido]Comando para atualizar banco de dados!

    Mensagem  indicatti 15/9/2016, 17:40

    Boa tarde Cláudio!

    Perfeito! Tudo funcionando como imaginei!
    Obrigado por todas as explicações, mais uma vez! Foram muitos incentivantes para continuar aprendendo Access e VBA!
    Parabéns por toda a iniciativa! Um grande abraço e muito obrigado!
    Espero daqui um tempo poder estar ajudando assim no fórum hahaha

    Valeu!
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Comando para atualizar banco de dados! Empty Re: [Resolvido]Comando para atualizar banco de dados!

    Mensagem  Cláudio Machado 15/9/2016, 22:17

    Que bom que resolveu seu problema.
    Todos aqui estamos para ajudar uns aos outros. Eu também passei muito sufoco para aprender, mas não sei nada ainda.
    Só passo um pouco do que aprendi com os mestres daqui.
    Chegará lá em breve amigo.
    Só falta fechar o tópico como RESOLVIDO.
    Abraço e boa sorte.


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Comando para atualizar banco de dados! 90dssg para agradecer a dica que solucionou seu problema.
    avatar
    indicatti
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Espanha
    Mensagens : 13
    Registrado : 29/08/2016

    [Resolvido]Comando para atualizar banco de dados! Empty Re: [Resolvido]Comando para atualizar banco de dados!

    Mensagem  indicatti 15/9/2016, 23:56

    feito!
    um grande abraço!
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Comando para atualizar banco de dados! Empty Re: [Resolvido]Comando para atualizar banco de dados!

    Mensagem  Cláudio Machado 16/9/2016, 00:11

    Obrigado pelo retorno.
    O Fórum agradece.


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Comando para atualizar banco de dados! 90dssg para agradecer a dica que solucionou seu problema.

    Conteúdo patrocinado


    [Resolvido]Comando para atualizar banco de dados! Empty Re: [Resolvido]Comando para atualizar banco de dados!

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 06:10