Você está na página 1de 13

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

Ricardo Rocha DCC-FCUP Visual Basic for Applications: # 52


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

Ricardo Rocha DCC-FCUP Visual Basic for Applications: # 53


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
Ricardo Rocha DCC-FCUP Visual Basic for Applications: # 54
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

Ricardo Rocha DCC-FCUP Visual Basic for Applications: # 55


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)
Ricardo Rocha DCC-FCUP Visual Basic for Applications: # 56
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
Ricardo Rocha DCC-FCUP Visual Basic for Applications: # 57
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

Ricardo Rocha DCC-FCUP Visual Basic for Applications: # 58


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
Ricardo Rocha DCC-FCUP Visual Basic for Applications: # 59
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)

acGroupLevel10Header: cabealho do nvel de agrupamento 10 (s relatrios)
acGroupLevel10Footer: rodap do nvel de agrupamento 10 (s relatrios)

Exemplo
Reports(Alunos).Section(acGroupLevel1Header).Visible = True

Ricardo Rocha DCC-FCUP Visual Basic for Applications: # 60


Objectos Report III
Grupos
report.GroupLevel(Index): nveis de
agrupamento/ordenao do relatrio
grouplevel.SortOrder: modo de
ordenao do grupo (False corresponde
a ordenao ascendente)
grouplevel.GroupHeader: se True
activa o cabealho do grupo
grouplevel.GroupFooter: se True
activa o rodap do grupo
grouplevel.GroupOn: especifica como
os dados so agrupados
grouplevel.KeepTogether: impe
restries ao modo de apresentar o
cabealho, rodap e seco de detalhe do
grupo nas pginas do relatrio
grouplevel.GroupInterval:
especifica o intervalo para agrupar os
dados

Ricardo Rocha DCC-FCUP Visual Basic for Applications: # 61


Objectos Report IV

Exemplo
as propriedades SortOrder, GroupHeader, GroupFooter,
GroupOn, GroupInterval e KeepTogether s podem ser alteradas
quando ocorre o evento Open do relatrio em causa

Private Sub Report_Open(Cancel As Integer)


With Me.GroupLevel(0)
.SortOrder = False ordenao ascendente
.GroupOn = 4 agrupar os registos por ...
.GroupInterval = 6 ... semestre (6 meses)
.KeepTogether = 0 sem restries de agrupamento
End With
End Sub

Ricardo Rocha DCC-FCUP Visual Basic for Applications: # 62


Objectos Control I
Referenciao
[form|report].Controls(Nome): referncia directa ao nome do controlo
[form|report].Controls!Nome: referncia directa ao nome do controlo
[form|report]!Nome: referncia directa ao nome do controlo
[form|report].Controls(0): referncia ao primeiro controlo no contexto
da ordem que se encontram no formulrio/relatrio respectivo
Screen.ActiveControl: referncia ao controlo que tem o foco
Exemplos
formas de referenciar o controlo [xpto] do formulrio [Novo]
Forms(Novo).Controls(xpto)
Forms(Novo).Controls!xpto
Forms(Novo)!xpto
Forms!Novo!xpto
Forms.Novo.xpto
o smbolo ! deve seguir-se a uma collection
Application!Forms!Novo!xpto erro
Forms!Novo!Controls!xpto erro
Ricardo Rocha DCC-FCUP Visual Basic for Applications: # 63
Objectos Control II
Propriedades comuns
ControlSource: origem dos dados do controlo (campo ou expresso
utilizando campos da tabela/consulta em que o formulrio baseado)
Combo / list boxes
RowSource: origem dos dados do controlo
RowSourceType: tipo da origem dos dados do controlo
Table/Query: os dados so os registos de uma tabela/consulta ou expresso SQL
Value List: os dados so uma lista de itens

Exemplos
Forms.Clientes.Combo.RowSourceType = Table/Query
Forms.Clientes.Combo.RowSource = Clientes
Forms.Clientes.Combo.ColumnCount = 2 campos Id e Nome
Forms.Clientes.Combo.ColumnWidths = 0;1
Forms.Clientes.Combo.BoundColumn = 1
Forms.Clientes.Lista.RowSourceType = Value List
Forms.Clientes.Lista.RowSource = 1;2;3
Forms.Clientes.Lista.AddItem 4
Ricardo Rocha DCC-FCUP Visual Basic for Applications: # 64

Você também pode gostar