Aprendendo sobre o Método OpenForm do objeto DoCmd
Este é um dos métodos mais utilizados quando se trata do objeto DoCmd, portanto não deixe de ver este tutorial: Aprendendo sobre o Método OpenForm do Objeto DoCmd.
Conceitualmente este método tem como função abrir um formulário, mas a medida que aprendemos sobre os argumentos, podemos identificar outras possibilidades e utilizar os recursos que o método nos proporciona.
A sintaxe deste método é:
DoCmd.OpenForm(FormName, View, FilterName, WhereCondition, DataMode, WindowsMode, OpenArgs)
Agora, vamos estudar sobre cada parâmetro deste método:
1 – FormName
É um argumento OBRIGATÓRIO. Representa o nome do formulário do Access (entre aspas). Ex: “frmClientes”
2 – View
É um argumento OPCIONAL. É como o formulário será exibido. A contante padrão deste argumento é o acNormal caso seja omitido, mas ele pode ter outras opções, tais com:
- acLayout: o formulário é aberto no Modo Layout;
- acPreview: o formulário é aberto no modo Visualizar impressão;
- acDesign: o formulário é aberto no Modo Design
- acFormDS: o formulário é aberto no Modo Folha de Dados;
- acFormPivotChart: o formulário é aberto no modo Gráfico Dinâmico;
- acFormPivotTable: o formulário é aberto no modo Tabela Dinâmica;
3 – FilterName
É também um argumento OPCIONAL. É o nome de uma consulta do Banco de Dados atual.
4 – WhereCondition
É um argumento OPCIONAL. Uma expressão que representa um critério de abertura do formulário. Este argumento só funciona para formulários com a fonte de registro associada a uma tabela ou consulta.
Este argumento ode ser usado de 3 maneiras distintas. Vamos supor que eu queira exibir o formulário frmClientes no registro cujo o cliente possua o código 25:
1ª Forma:
DoCmd.Openform "frmClientes", , , "iDCliente=25"
2ª Forma:
DoCmd.Openform "frmClientes", WhereCondition:="iDCliente=25"
3ª Forma:
Dim strCriterio as String
strCriterio = "iDCliente=25"
DoCmd.Openform "frmClientes", , ,strCriterio
5 – DataMode
É um argumento OPCIONAL. Ele especifica o modo de entrada de dados. Se aplica apenas para os formulários abertos no Modo Formulário ou Folha de Dados. Possui as seguintes constantes:
- acFormAdd: quando for adicionar um novo registro;
- acFormEdit: o usuário pode editar e adicionar um novo registro ;
- acFormPropertySettings: o usuário pode alterar as propriedades do formulário;
- acFormReadOnly: o usuário só pode exibir os registros;
6 – WindowsMode:
É um argumento OPCIONAL. Especifica o modo de janela no qual o formulário é aberto. Caso esta constante seja omitida a acWindowNormal é a padrão para este argumento. Porém há outras constantes, que são:
- acIcon: é aberto o formulário minimizado na barra de tarefas do windows;
- acHidden: o formulário é ocultado;
- acDialog: o formulário é aberto no formato de Caixa de Diálogo.
7 – OpenArgs:
É um argumento OPCIONAL. Ele é um argumento que possui várias utilidades. Ele trabalha melhor em conjunto com o evento “Open” do formulário.
Vamos entender como funciona o Argumento OpenArgs:
Caso você tenha um formulário contínuo e deseja-se que, ao abrir o formulário, o foco fosse direcionado para um determinado dado, por exemplo o cliente ‘Marcos Pereira’.
O 1º passo para este processo, vamos criar a seguinte rotina no evento ‘Ao Abrir’ do formulário acima:
Private Sub Form_Open(Cancel As Integer)
Dim strNome as String
strNome = Forms!frmListaClientes.OpenArgs
If Len(strNome) > 0 Then
DoCmd.GoToControl "Nome"
DoCmd.FindRecord strNOME, , True, , True, , True
End If
End Sub
Neste 2º passo, podemos criar um formulário que poderemos criar um botão e criar uma rotina e associar ao evento ‘Ao Clicar‘ do botão
Private Sub Comando4_Click()
Call AbrirFormulario
End Sub
O procedimento abaixo deverá estar fixado em um Módulo a parte:
Sub AbrirFormulario()
DoCmd.OpenForm "frmListaClientes", acNormal, , , acFormReadOnly, , "Marcos Pereira"
End Sub
Ao abrir o frmListaClientes o foco será direcionado para o cliente cujo o nome é ‘Marcos Pereira’ e poderia ser qualquer que fosse definido no procedimento.
Espero que este artigo possa ajudar e caso tenha alguma dúvida, coloque nos comentários aqui embaixo!
Um forte abraço!