08-12-2011, 21:12
Olá
Indo directo ao assunto, eu tenho um formulário em Access 2007 que contém 3 caixas de texto, um botão e uma caixa de listagem.
A caixa de listagem recebe dados de uma consulta, consulta essa que tem como critérios os dados inseridos nas caixas de texto. A consulta é executada ao clicar no botão.
Resumindo, o utilizador introduz dados nas caixas de texto (nas 3 ou apenas 1 ou 2) e ao clicar no botão a caixa de listagem é carregada com os dados que correspondem à pesquisa.
Até aqui tudo bem, no entanto se o utilizador não introduzir nada nas caixas de texto e clicar no botão a caixa de listagem é carregada com todos os dados. É isto que eu quero evitar e para isso pensei em colocar no evento click do botão o seguinte código,
Ao executar aparece a seguinte mensagem de erro,
Pelo que percebi a caixa de texto tinha de ter o foco em si mas eu não sei como isso se faz nem se é possível estarem as 3 com focos uma vez que eu estou a testar as 3.
Fiz umas pesquisas mas não encontrei nada em concreto, apenas que não é boa prática usar textbox.text = "" mas sim testbox.text = string.empty, isto das boas práticas eu vejo depois eu queria mesmo era conseguir testar o conteúdo das caixas de texto.
Nota: Os meus conhecimentos em VBA são limitados
Acabei de escrever isto e lembrei-me de uma possível solução, o botão pode estar desactivado enquanto o utilizador não introduzir nada nas caixas de texto e para o activar utilizo o eventoOnchange das caixas de texto, mas talvez dê o mesmo erro uma vez que o focos não estaria no botão, não faço ideia.
Acabei de testar isto que mencionei em cima e funciona, foi preciso ter este trabalho todo para ter esta brilhante ideia.
Bastou colocar o botão no estado desactivado e no evento Change de cada caixa de texto o seguinte código,
Ou seja, o utilizador não pode clicar no botão se não preencher uma das caixas de texto.
A seguinte dúvida ainda persiste,
Tenho outra caixa de listagem que é carregada com uma tabela que contém campos do tipo anexo, ou seja, na caixa de listagem aparece uma lista de ficheiro, pdf, por exemplo.
A questão que coloco é se é possível abrir esses anexos utilizando o evento click da caixa de listagem e se sim, como?
Indo directo ao assunto, eu tenho um formulário em Access 2007 que contém 3 caixas de texto, um botão e uma caixa de listagem.
A caixa de listagem recebe dados de uma consulta, consulta essa que tem como critérios os dados inseridos nas caixas de texto. A consulta é executada ao clicar no botão.
Resumindo, o utilizador introduz dados nas caixas de texto (nas 3 ou apenas 1 ou 2) e ao clicar no botão a caixa de listagem é carregada com os dados que correspondem à pesquisa.
Até aqui tudo bem, no entanto se o utilizador não introduzir nada nas caixas de texto e clicar no botão a caixa de listagem é carregada com todos os dados. É isto que eu quero evitar e para isso pensei em colocar no evento click do botão o seguinte código,
Código:
Private Sub Comando16_Click()
If (cod.text = "" & nome.text = "" & idade.text = "") Then
MsgBox "Preencha um dos Campos de Pesquisa"
Else
Instrucções
End If
End Sub
Ao executar aparece a seguinte mensagem de erro,
Citar:Só é possível referenciar uma propriedade ou método para um controlo, se o foco estiver no controlo
Pelo que percebi a caixa de texto tinha de ter o foco em si mas eu não sei como isso se faz nem se é possível estarem as 3 com focos uma vez que eu estou a testar as 3.
Fiz umas pesquisas mas não encontrei nada em concreto, apenas que não é boa prática usar textbox.text = "" mas sim testbox.text = string.empty, isto das boas práticas eu vejo depois eu queria mesmo era conseguir testar o conteúdo das caixas de texto.
Nota: Os meus conhecimentos em VBA são limitados
Acabei de escrever isto e lembrei-me de uma possível solução, o botão pode estar desactivado enquanto o utilizador não introduzir nada nas caixas de texto e para o activar utilizo o eventoOnchange das caixas de texto, mas talvez dê o mesmo erro uma vez que o focos não estaria no botão, não faço ideia.
Acabei de testar isto que mencionei em cima e funciona, foi preciso ter este trabalho todo para ter esta brilhante ideia.
Bastou colocar o botão no estado desactivado e no evento Change de cada caixa de texto o seguinte código,
Código:
btnpesquisa.Enabled = True
Ou seja, o utilizador não pode clicar no botão se não preencher uma das caixas de texto.
A seguinte dúvida ainda persiste,
Tenho outra caixa de listagem que é carregada com uma tabela que contém campos do tipo anexo, ou seja, na caixa de listagem aparece uma lista de ficheiro, pdf, por exemplo.
A questão que coloco é se é possível abrir esses anexos utilizando o evento click da caixa de listagem e se sim, como?