gilbertoasm 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