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 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

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