Escolar Documentos
Profissional Documentos
Cultura Documentos
Aula 16
Aula 16
VBA e Access
Modo de interaco
As funcionalidades do VBA esto completamente integradas com o Access
Um bom exemplo dessa integrao o facto dos formulrios e dos mdulos
fazerem por defeito parte integrante de uma base de dados em Access
Visual Basic for Applications: # 53 Ricardo Rocha DCC-FCUP
Hierarquia de objectos
Objectos de nvel um
[Application.]Forms: collection dos formulrios que se encontram
abertos na base de dados
[Application.]Reports: collection dos relatrios que se encontram
abertos na base de dados
[Application.]DataAccessPages: collection das pginas que se
encontram abertas na base de dados
[Application.]Modules: collection dos mdulos que se encontram
abertos na base de dados
[Application.]DoCmd: permite utilizar directamente no cdigo o conjunto
de aces disponveis como macros (abrir formulrios, imprimir relatrios, ...)
[Application.]Screen: permite referenciar o controle, pgina, folha de
dados, formulrio ou relatrio que tem o foco num dado momento
Screen.ActiveControl
Screen.ActiveDataAccessPage
Screen.ActiveDatasheet
Screen.ActiveForm
Screen.ActiveReport
Visual Basic for Applications: # 54 Ricardo Rocha DCC-FCUP
Objecto DoCmd I
Abrir formulrios/relatrios
DoCmd.OpenForm FormName,,, WhereCond, DataMode,, Args: abre o
formulrio FormName em modo DataMode, filtra a informao mediante a
condio WhereCond e instancia a propriedade OpenArgs do formulrio com o
valor indicado em Args. DataMode pode ser uma das seguintes constantes:
acFormEdit: permite inserir novos registos e alterar os existentes
acFormAdd: apenas permite inserir novos registos (os registos existentes so
ocultos)
acFormReadOnly: no permite inserir novos registos nem editar os existentes
acFormPropertySettings: usa as permisses definidas nas propriedades do
formulrio
DoCmd.OpenReport ReportName,,, WhereCond,, Args: abre o relatrio
ReportName, filtra a informao mediante a condio WhereCond e instancia a
propriedade OpenArgs do relatrio com o valor indicado em Args
Exemplos
DoCmd.OpenForm Clientes,,, Apelido = Silva, acFormEdit
DoCmd.OpenReport Clientes,,, Nome Like A*,, 10
Visual Basic for Applications: # 55 Ricardo Rocha DCC-FCUP
Objecto DoCmd II
Fechar formulrios/relatrios
DoCmd.Close ObjectType, ObjectName, Save: fecha o objecto do tipo
ObjectType com nome ObjectName e guarda-o segundo a opo Save
ObjectType pode ser uma das seguintes constantes (entre outras):
acDefault: para fechar a janela activa
acForm: para fechar formulrios
acReport: para fechar relatrios
Save pode ser uma das seguintes constantes:
acSavePrompt: questiona o utilizador para guardar possveis alteraes
acSaveYes: guarda possveis alteraes
acSaveNo: no guarda possveis alteraes
Exemplos
DoCmd.Close acForm, Clientes, acSaveYes
DoCmd.Close acReport, Clientes, acSaveNo
Visual Basic for Applications: # 56 Ricardo Rocha DCC-FCUP
Objectos Form I
Referenciao
Forms(Clientes): referncia directa ao nome do formulrio
Forms!Clientes: referncia directa ao nome do formulrio
Forms![Clientes e Facturas]: para nomes com espaos
Forms(0): referncia ao primeiro formulrio a ser aberto
Screen.ActiveForm: referncia ao formulrio que tem o foco
Propriedades
form.Name: nome do formulrio
form.Caption: ttulo do formulrio
form.Visible: visibilidade do formulrio
form.Modal: se True requer que o
formulrio seja fechado para que o foco
possa ser movido para outro objecto
form.RecordSource: origem dos
registos do formulrio (tabela/consulta da
base de dados ou expresso SQL)
Visual Basic for Applications: # 57 Ricardo Rocha DCC-FCUP
Objectos Form II
Propriedades
form.NavigationButtons: esconde/apresenta os botes de navegao
form.AllowEdits: se True permite editar os registos previamente guardados
form.AllowDeletions: se True permite remover registos
form.AllowAdditions: se True permite adicionar novos registos
form.DataEntry: se True apenas permite adicionar novos registos
form.Filter: filtra os registos a apresentar no formulrio
form.FilterOn: activa/desactiva o filtro
form.OrderBy: modo de ordenao dos registos do formulrio
form.OrderByOn: activa/desactiva o modo de ordenao
Exemplo
Private Sub Form_Load()
Me.Filter = Pas = Portugal : Me.FilterOn = True
Me.OrderBy = Pas, Cidade DESC
End Sub
Private Sub BotoOrdenao_Click()
Me.OrderByOn = Not Me.OrderByOn
End Sub
Visual Basic for Applications: # 58 Ricardo Rocha DCC-FCUP
Objectos Form III
Mtodos
form.Requery: executa novamente a consulta na qual o formulrio baseado
form.Refresh: actualiza o conjunto actual de registos do formulrio. Os
registos que entretanto tenham sido adicionados/removidos (por outro utilizador
num ambiente multi-utilizador) no sero includos/excludos do conjunto actual.
To pouco sero excludos os registos que j no satisfaam a consulta
associada ao formulrio
form.Undo: desfaz todas as alteraes feitas ao registo actual desde que foi
guardado pela ltima vez
Exemplo
Private Sub Form_BeforeUpdate(Cancel As Integer)
If ... then
...
Me.Undo
End If
End Sub
Visual Basic for Applications: # 59 Ricardo Rocha DCC-FCUP
Objectos Report I
Referenciao
Reports(Clientes): referncia directa ao nome do relatrio
Reports!Clientes: referncia directa ao nome do relatrio
Reports![Clientes e Facturas]: para nomes com espaos
Reports(0): referncia ao primeiro relatrio aberto
Screen.ActiveReport: referncia ao relatrio que tem o foco
Propriedades
report.Name: nome do relatrio
report.Caption: ttulo do relatrio
report.Visible: visibilidade do relatrio
report.RecordSource: origem dos registos do relatrio (tabela/consulta da
base de dados ou expresso SQL)
report.Filter: filtra os registos a apresentar no relatrio
report.FilterOn: activa/desactiva o filtro
report.OrderBy: modo de ordenao dos registos do relatrio
report.OrderByOn: activa/desactiva o modo de ordenao
Visual Basic for Applications: # 60 Ricardo Rocha DCC-FCUP
Objectos Report II
Seces
report.Section(Index): seces do relatrio. Index pode ser uma das
seguintes constantes:
acDetail: seco detalhe
acHeader: seco cabealho
acFooter: seco rodap
acPageHeader: seco cabealho de pgina
acPageFooter: seco rodap de pgina
acGroupLevel1Header: cabealho do nvel de agrupamento 1 (s relatrios)
acGroupLevel1Footer: rodap do nvel de agrupamento 1 (s relatrios)