miguel.serra 12/2/2020, 15:53
Olá, onfire!
A consulta passt-through, no meu humilde entendimento, é uma consulta feita com o código sql (na linguagem SQL/MySql/ Talvez Postgree, etc, não a do MS-Access) e ela vai retornar os dados no MS-Access como se fosse uma tabela vinculada do BD. Muito mais rápido!
Você, primeiro, precisa ir em Criar/Design da Consulta e clicar no botão "Passagem", que é um ícone de globo.
Irá aparecer uma tela em branco onde você deve colocar o código da consulta.
Veja que não há aquela tela de construção, onde você consegue montar uma consulta colocando visualmente as tabelas e fazendo os relacionamentos. Precisa ser código mesmo.
Coloque o código. Exemplo (supondo que vc tem uma tabela contatos e há os campos "nome" e "nacionalidade"):
SELECT nome FROM contatos WHERE nacionalidade = 'brasileira';
Você deve salvar esta consulta de passagem. Exemplo: pst_contatos_por_nacionalidade
Sempre que você abrir a consulta pst_contatos_por_nacionalidade, aparecerão os contatos de brasileiros.
Minha pergunta inicial era se havia como o código daquela consulta interagir com o campo de algum formulário, tornando ele dinâmico.
Exemplo. Se tenho um campo no formulário chamado txt_nacionalidade e seleciono a opção "espanhola", o código abaixo deveria ler isso normalmente:
'SELECT nome FROM contatos WHERE nacionalidade = ' & Me.txt_nacionalidade (deveria entender como "espanhola")
Assim, ao clicar em algum botão, o evento iria abrir a consulta baseando-se na nacionalidade do indivíduo escolhida previamente no formulário.
Mas o Access não facilitou para nós... Não dá para deixar dinâmico o código da consulta pass-through.
Todavia nosso amigo Cláudio Más deu uma saída de mestre: fez o com que a ação do botão, por meio do VBA, alterasse o código contido em pst_contatos_por_nacionalidade baseando-se no valor que está no formulário, antes de dar sequência aos eventos do botão em si
Ou seja, se está salvo agora como: SELECT nome FROM contatos WHERE nacionalidade = 'brasileira';
Ele irá alterar para: SELECT nome FROM contatos WHERE nacionalidade = 'espanhola';
Salvará e dará sequência nas ações seguintes do botão.
Note que, agora, se você abrir a consulta pst_contatos_por_nacionalidade, irá ver os contatos de espanhóis
Aqui coloquei o "conceito" que entendo pela tabela pass-through e que me ajuda bastante