Dicas do OsmarJr

Como referenciar formulários?


Algumas vezes necessitamos referenciar informações de um formulário em outro formulário. Estamos trabalhando com dois formulários separados. podemos estar trabalhando com um formulário principal e um subformulário. Podemos estar trabalhando com formulários com subformulários aninhados.

Autor:JasonM. Artigo original.
Tradução: Osmar José Correia Júnior


Como referencio um formulário?

Na maior parte dos casos temos diversas escolhas em termos de notação usada. Não discutiremos, aqui, estas variações, mas tentaremos usar as mais comuns/úteis. (para uma discussão sobre notação, uma olhada em Referenciando objetos em Access: a notação ! e . e (" ")).

O conceito básico a ter em mente ao tentar referenciar um formulário é que o form é alcançado por meio da coleção Forms. Isso funciona da mesma forma para formulários vinculados e desvinculados.


Como referencio um formulário a partir de outro formulário?

Digamos que queremos saber o valor de uma caixa de texto txtDados de um formulário frmUm e estamos no formulário frmDois.

O caminho mais longo:
Forms("frmUm").Form.Controls("txtDados").Value

Utilizando as propriedades padrão, podemos diminuir isso:
Forms("frmUm")("txtDados")


Este é um método interessante pois permite a substituição de uma variável string demtro dos parentesis. Outras notações alternativas que guardam a mesma coisa:

Forms("frmUm").Controls("txtDados")
Forms("frmUm").txtDados
Forms!frmUm.txtDados
Forms!frmUm!txtDados

O último exemplo deve ser comentado, já que é a notação usada para referenciar um formulário em uma consulta.

Um último exemplo:
Form_frmUm.txtDados


Isto também merece um comentário: não vai funcionar em um formulário leve, um formulário que não tem módulo. é um erro em tempo de compilação, fácil de encontrar. Esta também é a notação preferencial para chamar um procedimento em um módulo de formulário diferente do módulo do formulário corrente.

Como referencio um subformulário a partir do formulário principal?

Digamos que temos um formulário principal frmUm, com um subform fsubUm que contém uma caixa de texto txtDados_SubForm que desejamos referenciar. Eis a notação:
Me.fsubUm.Form.txtDados_SubForm


Uma coisa que devemos ter em mente é que, aqui, fsubUm é o nome do controle do subformulário (pode ser, também, o nome do próprio subformulário, mas isso não é relevante). A referência é feita através do controle (o valor Nome na caixa de diálogo de propriedades do subformulário, não o SourceObject).

Como referencio o formulário principal a partir do subformulário?
A mesma disposição de formulários acima, mas desejamos referenciar a caixa de texto txtDados do formulário principal no subformulário. O conceito básico a ter em mente é que vamos usar a propriedade Parent do subform para nos referirmos ao formulário principal.

Me.Parent.txtDados
Me.Parent!txtDados
Me.Parent.Form.Controls("txtDadosTabela")


Se estivessemos em um subformulário de um subformulário, poderíamos usar Parent do Parent para nos movermos dois níveis do formulário principal:
Me.Parent.Parent.Form.Controls("txtTableData")


Home

Contato | Copyright©Osmar José Correia Júnior | 09-Mar-2006 17:10