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


    Excluir na tabela

    avatar
    dori
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 79
    Registrado : 22/04/2016

    Excluir na tabela Empty Excluir na tabela

    Mensagem  dori em 13/4/2019, 20:27

    Boa tarde pessoal!

    No meu relatório de data de validade (RelValidadePorLote), tem um campo de nome: "DiasDeValidade"
    Eu gostaria que quando o valor desse campo for -5, ou seja, o produto já vanceu faz cinco dias, ele não apareça mais nesse relatório e seja eliminado da tabela de origem " TabCompras " em função do número do lote.
    Como faço para conseguir esse resultado?
    Os campos desse relatório tem origem numa consulta. (ConsQtdePorLote).


    Vou deixar um print da tela para facilitar o entendimento.

    Obrigado!
    Anexos
    Excluir na tabela AttachmentRelValidade.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (239 Kb) Baixado 9 vez(es)
    avatar
    gilbertoasm
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 11/01/2019

    Excluir na tabela Empty Re: Excluir na tabela

    Mensagem  gilbertoasm em 14/4/2019, 01:59

    Vamos lá, Dori.

    Vejo que você quer fazer duas ações: testar o campo "DiasDeValidade" para então "eliminar registros na tabela de origem". Uma vez eliminado o(s) registro(s) da tabela de origem, ele(s) não mais "aparecerá(ão) no relatório". Veja que essa ação não terá como ser desfeita.

    Me dê mais informações: o campo "DiasDeValidade" é um campo calculado ou digitado? Se for digitado, alguém tem que atualizá-lo diariamente? Vou considerar que o mesmo seja digitado.

    Bom, para dar a você uma ideia do que fazer, acredito que terá que partir para programação (VBA). Pode até ser que haja macros ou comandos SQL que você atinja esse objetivo, mas quando a coisa começa a ficar mais complexa, como é o teu caso, eu prefiro partir para um VBA por ter mais recursos, flexibilidade e, o mais importante, controle sobre as coisas.

    Nesse caso, quando você chamar o relatório, vamos usar o evento "Ao abrir" para nele rodar uma query para varrer sua tabela e identificar aqueles registros cujo o campo "DiasDeValidade" é igual ou menor à -5 (aqui estou levando em conta o sinal, ou seja, serão identificados registros com valores -5, -6, -7, etc.) e, uma vez identificados esses registros, deletá-los. Isso é possível fazer numa tacada só com uma query SQL.

    Segue abaixo um exemplo de código VBA que você colocaria no evento "Ao abrir" do relatório que faria tudo isso:


    Application.DoCmd.SetWarnings False 'Use esse comando para desabilitar as mensagens de aviso de deleção de registro do Access
    stringSQL = "DELETE FROM suaTabelaDeOrigem WHERE DiasDeValidade <= -5" 'Aqui é montada a string que separará os registros que você quer deletar. Observe a condição (filtro) matemática <=-5
    Application.DoCmd.RunSQL (stringSQL) 'Esse comando efetivamente executará a query de deleção,que eliminará todos os registros cujo campo "DiasDeValidade" forem menor ou igual a -5
    Application.DoCmd.SetWarnings True 'Use esse comando para reabilitar as mensagens de aviso de deleção de registro do Access


    Por hora, é isso aí. Muito cuidado com o comando DELETE. Se não tiver segurança para usá-lo, você pode fazer coisas catastróficas. Veja que para usar essa solução que estou dando, você tem que dominar programação em VBA.

    Espero poder estar te ajudando. Boa sorte
    avatar
    dori
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 79
    Registrado : 22/04/2016

    Excluir na tabela Empty Re: Excluir na tabela

    Mensagem  dori em 22/4/2019, 16:13

    Olá  Gilberto!
    O campo dias de validade é um campo calculado no próprio relatório. =[txtDataValidade]-[txtDataAtual]
    O que existe na tabela é o número do lote (TabDetCompras)
    Esse relatório tem origem numa consulta.
    Eu gostaria que não aparecesse no relatório, todos os produtos com lote cujo os dias de validade  fossem inferior a -5 dias. Considerando que determinada quantidade de produtos tem seu número de lote exclusivo.

    Como faço para adaptar nesse código?  Ou outro qualquer?
    avatar
    gilbertoasm
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 11/01/2019

    Excluir na tabela Empty Re: Excluir na tabela

    Mensagem  gilbertoasm em 22/4/2019, 17:10

    Eu acho que está fácil. Na sua consulta você pode criar uma expressão igual a essa que você usou no relatório usando a seguinte sintaxe: DiasVencido:[txtDataValidade]-[txtDataAtual] e no critério dessa coluna você colocar >-5. Para criar a expressão, é só preencher uma coluna com a mesma. Veja figura em anexo.

    Para eliminar esses registros, sugiro que use o VBA, pois o que você quer requer um certo automatismo que eu acredito não conseguir de outra maneira. Mas como eu disse, para usar VBA, tem que conhecer de programação.

    Uma outra coisa importante para você observa: o campo de data de validade (txtDataValidade) tem que ser do tipo data, certo?
    Anexos
    Excluir na tabela Attachmentfiltro.png
    Você não tem permissão para fazer download dos arquivos anexados.
    (3 Kb) Baixado 4 vez(es)
    avatar
    dori
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 79
    Registrado : 22/04/2016

    Excluir na tabela Empty Re: Excluir na tabela

    Mensagem  dori em 29/4/2019, 14:59

    É possível excluir direto no relatório, ao clicar de um botão?

    Por exemplo:
    Se o campo data de validade for igual ao campo data atual, eu clico nesse botão e ele desaparece
    com esse registro?

    Conteúdo patrocinado

    Excluir na tabela Empty Re: Excluir na tabela

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 21/7/2019, 05:49