VBA e Access Modo de interacção As funcionalidades do VBA estão completamente integradas com a aplicação Um bom exemplo dessa integração é o facto dos formulários e dos módulos fazerem por defeito parte integrante de uma base de dados em Access Visual Basic for Applications: # 23 Consultar e alterar opções Opções do Access Application.GetOption(OptionName) Application.SetOption OptionName, Setting Visual Basic for Applications: # 24
Hierarquia de Objectos Objectos de nível um Forms: collection dos formulários abertos na base de dados corrente Reports: collection dos relatórios abertos na base de dados corrente Modules: collection dos módulos abertos na base de dados corrente Screen: permite referenciar a folha de dados, formulário, relatório ou controle que tem o foco Screen.ActiveDatasheet Screen.ActiveForm Screen.ActiveReport DoCmd: permite utilizar directamente no código o conjunto de acções disponíveis como macros (abrir formulários, imprimir relatórios,...). References: collection das referências para bibliotecas de objectos activos no Access. Permite controlar outras aplicações via OLE adicionando e removendo a biblioteca de objectos respectiva Screen.ActiveControl Visual Basic for Applications: # 25 Objectos Form Forms( Alunos ) Forms(0) Forms!Alunos Forms![Alunos e Turmas] Screen.ActiveForm Me Abrir e fechar formulários DoCmd.OpenForm FormName,,, WhereCondition, DataMode,, DoCmd.Close ObjectType, ObjectName, Save form.name form.caption form.currentview form.navigationbuttons form.allowadditions form.allowdeletions form.allowedits form.dataentry form.modal form.visible form.filter form.filteron form.orderby form.recalc form.requery form.refresh form.undo form.setfocus form.recordsource Visual Basic for Applications: # 26
Objectos Report Reports( Alunos ) Reports(0) Reports!Alunos Reports![Alunos e Turmas] Screen.ActiveReport Me Abrir e fechar relatórios DoCmd.OpenReport ReportName,,, WhereCondition DoCmd.Close ObjectType, ObjectName, Save report.name report.caption report.visible report.recordsource Secções e grupos report.section(acdetail) report.grouplevel(0) report.filter report.orderby CreateGroupLevel(Report, Expression, Header, Footer) grouplevel.groupheader grouplevel.groupon grouplevel.keeptogether grouplevel.groupfooter grouplevel.groupinterval grouplevel.sortorder Visual Basic for Applications: # 27 Objectos Control [form report].controls( Nome") [form report]!nome comuns Left Top Height Width AutoSize BackColor ForeColor SpecialEffect BackStyle Font Caption ControlTipText TabIndex TabStop Locked Enabled Visible Controlsource Command button = Text box Cancel Text Default EnterKeyBehavior Option / check / toggle buttons Value OptionValue List /combo Boxes RowSourceType RowSource BoundColumn Value [form report].controls(0) Screen.ActiveControl Visual Basic for Applications: # 28
Data Access Objects I Aspectos gerais Representam o conjunto de elementos envolvidos numa base de dados: tabelas, consultas, registos, campos, relações,... Constituem uma hierarquia de objectos independente da hierarquia da aplicação A inclusão dos DAO no VBA permite a manipulação de base de dados através da programação Hierarquia de objectos DBEngine Workspaces Databases Users Errors Groups TableDefs QueryDefs Recordsets Relations Containers Documents Indexes Parameters Visual Basic for Applications: # 29 Data Access Objects II Objectos Database Criar novo Set database = workspace.opendatabase(name, Options, ReadOnly) de interacção com as consultas database.createquerydef Name, SQLText Objectos Recordset Criar novo database.openrecordset(name, Type, Options, LockEdit) database.execute Query querydef.openrecordset(type, Options, LockEdit) recordset. recordset.bof recordset.eof recordset.recordcount recordset.bookmark recordset.nomatch recordset.movefirst Last Next Previous recordset.findfirst Last Next Previous Criteria recordset.edit recordset.update recordset.addnew recordset.requery recordset.delete recordset.close Visual Basic for Applications: # 30
Collections e Classes Objecto Collection Count collection.add Item, Key, Before, After collection.remove Index Módulos de classe Variáveis de classe (data members) de classe Property Get de classe Eventos de classe Private Sub Class_Initialize() Classes de collections de classe como objectos Property Set collection.item(index) Property Let Private Sub Class_Terminate() Visual Basic for Applications: # 31 Formas de tratar erros On Error Resume Next On Error GoTo line On Error GoTo 0 Retomar a execução Resume Resume Next Resume line Objecto Err Err.Number Err.Description Err.Clear Err.Raise Number Tratamento de Erros Visual Basic for Applications: # 32