Pessoal,
Suponhamos que em dois formulários, tenhamos os seguintes controles:
form1 - Formulário 1
combo1 - Uma caixa combinada em que são selecionados os status de uma tarefa;
button1 - o botão que abre o Fromulário 2.
form2 - Formulário 2
lista1 - Uma caixa de lista com tarefas filtradas pelo status selecionado, por exemplo, se o usuário selecionou "pendente", na lista, mostram-se apenas as tarefas com status pendente.
Envio-lhes um PDF com a página de ajuda do método OpenForm. Apesar da falta de intimidade com o VBA, consegui fazer duas tentativas.
No evento "ao clicar" de button1, coloquei o seguinte código:
DoCmd.OpenForn FormName := "form2", WhereCondition := "status = " & combo1
"status" é o nome do campo da tabela tab_tarefa que contém a lista das tarefas que desejo filtrar. Não entendi bem o funcionamento de WhereCondition, especialmente porque em nenhum momento do comando, passei o nome da tabela, então, como poderia saber que status é um campo de tab_tarefa?
O resultado é que form2 foi aberto e que, na caixa de lista foram exibidos todos os registros, inclusive aqueles que deveriam ser filtrados. Tal sugere-me um erro no uso de WhereCondition.
Parti para a segunda tentativa. Criei uma consulta query1 que exibe todas as tarefas que tem por condição ser o status igual ao valor digitado na combo1. Fiz tudo no assistente, mas mostro o SQL gerado pelo Access:
SELECT tab_tarefa.Status, tab_tarefa.Data, tab_tarefa.Projeto, tab_tarefa.Título, tab_tarefa.Responsável, *
FROM tab_tarefa
WHERE (((tab_tarefa.Status)="combo1"));
No evento "ao clicar" de button1, coloquei o seguinte:
DoCmd.OpenForn FormName := "form2", FilterName := "query1"
O resultado foi que o form2 foi aberto, mas desta vez a caixa de lista estava em branco.
Então, o que lhes pergunto é: o que estou a fazer de errado? Como poderia carregar a caixa de lista com as tarefas filtradas pela seleção do combo1?
Suponhamos que em dois formulários, tenhamos os seguintes controles:
form1 - Formulário 1
combo1 - Uma caixa combinada em que são selecionados os status de uma tarefa;
button1 - o botão que abre o Fromulário 2.
form2 - Formulário 2
lista1 - Uma caixa de lista com tarefas filtradas pelo status selecionado, por exemplo, se o usuário selecionou "pendente", na lista, mostram-se apenas as tarefas com status pendente.
Envio-lhes um PDF com a página de ajuda do método OpenForm. Apesar da falta de intimidade com o VBA, consegui fazer duas tentativas.
No evento "ao clicar" de button1, coloquei o seguinte código:
DoCmd.OpenForn FormName := "form2", WhereCondition := "status = " & combo1
"status" é o nome do campo da tabela tab_tarefa que contém a lista das tarefas que desejo filtrar. Não entendi bem o funcionamento de WhereCondition, especialmente porque em nenhum momento do comando, passei o nome da tabela, então, como poderia saber que status é um campo de tab_tarefa?
O resultado é que form2 foi aberto e que, na caixa de lista foram exibidos todos os registros, inclusive aqueles que deveriam ser filtrados. Tal sugere-me um erro no uso de WhereCondition.
Parti para a segunda tentativa. Criei uma consulta query1 que exibe todas as tarefas que tem por condição ser o status igual ao valor digitado na combo1. Fiz tudo no assistente, mas mostro o SQL gerado pelo Access:
SELECT tab_tarefa.Status, tab_tarefa.Data, tab_tarefa.Projeto, tab_tarefa.Título, tab_tarefa.Responsável, *
FROM tab_tarefa
WHERE (((tab_tarefa.Status)="combo1"));
No evento "ao clicar" de button1, coloquei o seguinte:
DoCmd.OpenForn FormName := "form2", FilterName := "query1"
O resultado foi que o form2 foi aberto, mas desta vez a caixa de lista estava em branco.
Então, o que lhes pergunto é: o que estou a fazer de errado? Como poderia carregar a caixa de lista com as tarefas filtradas pela seleção do combo1?