Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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
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
Exemplos
DoCmd.OpenForm Clientes,,, Apelido = Silva, acFormEdit
DoCmd.OpenReport Clientes,,, Nome Like A*,, 10
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
Exemplos
DoCmd.Close acForm, Clientes, acSaveYes
DoCmd.Close acReport, Clientes, acSaveNo
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)
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
Ricardo Rocha DCC-FCUP
Exemplo
Private Sub Form_BeforeUpdate(Cancel As Integer)
If ... then
...
Me.Undo
End If
End Sub
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
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)
Exemplo
Reports(Alunos).Section(acGroupLevel1Header).Visible = True
Ricardo Rocha DCC-FCUP
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
With Me.GroupLevel(0)
.SortOrder = False
.GroupOn = 4
.GroupInterval = 6
.KeepTogether = 0
End With
End Sub
As Integer)
ordenao ascendente
agrupar os registos por ...
... semestre (6 meses)
sem restries de agrupamento
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
'ao utilizar o smbolo ! no pode seguir-se uma collection
Application.Forms!Novo!xpto
ok
Application!Forms!Novo!xpto
erro
Forms!Novo!Controls!xpto
erro
Ricardo Rocha DCC-FCUP
Objectos Control II
Propriedades comuns
ControlSource: origem dos dados do controlo (campo ou expresso
utilizando campos da tabela/consulta em que o formulrio baseado)
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
Command
Recordset
Errors
Parameters
Fields
Properties
Properties
Properties
Objectos Connection I
Mtodos
connection.Open ConnectionString: estabelece uma nova ligao
connection.Execute(CommandText,,Options): para executar comandos
adCmdTable: indica que CommandText refere o nome de uma tabela ou consulta
adCmdText: indica que CommandText refere uma expresso SQL
Exemplos
estabelecer ligao explcita a uma base de dados
Dim con As New Connection
a declarao New cria
uma nova instncia do
con.Open Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=teste.mdb
con.Close
ligao corrente ao Access
Dim con As Connection
se vou usar Set posso
Set con = CurrentProject.Connection
con.Close
Ricardo Rocha DCC-FCUP
do Access
desde logo
objecto
omitir New
Objectos Connection II
Exemplos
criar recordset a partir duma ligao explcita (3 exemplos)
Dim con As Connection : Dim rst As Recordset
Set con = ...
Set rst = con.Execute(Clientes, , adCmdTable)
Set rst = con.Execute([Query sem Parmetros], , adCmdTable)
Set rst = con.Execute(SELECT * FROM Clientes, , adCmdText)
rst.Close
con.Close
criar recordset a partir da ligao corrente ao Access
Dim rst As New Recordset
rst.Open Clientes, CurrentProject.Connection
rst.Close
criar recordset a partir duma ligao implcita
Dim rst As New Recordset
rst.Open Clientes, Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=teste.mdb
rst.Close
Ricardo Rocha DCC-FCUP
Objectos Command
Propriedades e mtodos
command.ActiveConnection: ligao associada ao comando
command.CommandText: texto do comando
command.CommandType: tipo de comando (adCmdTable / adCmdText)
command.Parameters: parmetros do comando
command.Execute: para executar o comando
Exemplos
Dim com As New Command
comando sem parmetros
com.ActiveConnection = CurrentProject.Connection
com.CommandText = SELECT * FROM Clientes
com.CommandType = adCmdText : Set rst = com.Execute
comando com parmetros
com.ActiveConnection = CurrentProject.Connection
com.CommandText = [Query com Parmetros]
com.CommandType = adCmdTable
com.Parameters.Refresh
l os parmetros
com.Parameters([Limite?]) = 100 : Set rst = com.Execute
Ricardo Rocha DCC-FCUP