Às vezes temos tarefas recorrente que gostaríamos de simplificar e quando essas tarefas envolvem interações com o modelo de objetos do MS Access, nós certamente não queremos perder o recurso de intellisense embutido neste.
Você tem algum intellisense?
Freqüentemente abrimos os nossos formulários usando uma cláusula WHERE, e para nos certificarmos de abrí-los corretamente, sempre o fechamos antes de abrí-lo novamente.
Criamos um procedimento simples chamado OpenMyForm usando uma seqüência regular para a condição onde.
Public Sub OpenMyForm(FormName As String, WhereCondition As String)If CurrentProject.AllForms(FormName).IsLoaded ThenDoCmd.Close acForm, FormNameEnd IfDoCmd.OpenForm FormName, WhereCondition:=WhereConditionEnd Sub
Este código funcionou bem, mas suponha que deseje abrir o formulário de abertura no modo visualizar ou folha de dados. Poderíamos fazer isso adicionando um outro parâmetro:
Public Sub OpenMyForm( _FormName As String, _WhereCondition As String, _OpenAsDatasheet As Boolean)If CurrentProject.AllForms(FormName).IsLoaded ThenDoCmd.Close acForm, FormNameEnd IfIf OpenAsDatasheet ThenDoCmd.OpenForm FormName, _WhereCondition:=WhereCondition, _View:=acFormDSElseDoCmd.OpenForm FormName, _WhereCondition:=WhereCondition, _View:=acNormalEnd IfEnd Sub
Não queremos continuar adicionando mais linhas de código, então modificamos o OpenMyForm para usar o modo nativo do Access AcFormView, AcFormOpenDataMode e AcWindowMode:
Public Sub OpenMyForm ( _FormName As Variant, _Optional View As AcFormView = acNormal, _Optional FilterName As Variant, _Optional WhereCondition As Variant, _Optional DataMode As AcFormOpenDataMode = acFormPropertySettings, _Optional WindowMode As AcWindowMode = acWindowNormal, _Optional OpenArgs As Variant)If CurrentProject.AllForms(FormName).IsLoaded ThenDoCmd.Close acForm, FormNameEnd IfDoCmd.OpenForm FormName, _View, _FilterName, _WhereCondition, _DataMode, _WindowMode, _OpenArgsEnd Sub
Se você usar o navegador de objeto (F2) e olhar para cima DoCmd.OpenForm, notará que os parâmetros são exatamente iguais. Quando adicionar uma nova linha OpenMyForm, ainda receberá a mesma ajuda intellisense que teve com DoCmd.OpenForm originais.
Como os parâmetros são definidos usando os mesmos tipos de dados (perceba que as enumerações são uma forma de tipo de dados), nomeando os mesmos nomes, e têm os mesmos padrões, todas as variantes possíveis de DoCmd.OpenForm, omitem argumentos, use vírgulas para pular alguns argumentos opcionais, trabalhando com o novo OpenMyForm sem quaisquer alterações, além do fato de que nós temos a garantia de que a filtragem será a atual.
Para descobrir quais enumerações são built-in para o Access e o DAO, pressione F2 para abrir e olhando para o acesso e/ou bibliotecas DAO para ver como as enumerações são nomeadas. Se olhar para o intellisense, verá que ele mostra o tipo de dados, incluindo o nome de enumerações para que possa usá-lo e obtê-las de modo correto no seu próprio código . Claro que não está limitado a apenas acesso e / ou enumerações DAO.
Quais são os outros usos para as enumerações embutidas ? Deixe-me saber nos comentários!
Tags: VBA, Access, intellisense, procedure, built-in,
Nenhum comentário:
Postar um comentário