of 20 /20
SI Macros e Programação VBA 1 / 15 Macros e Programação VBA Sistemas de Informação MIEM / MIEIG

Aula Access2007 03.ppt - paginas.fe.up.ptpaginas.fe.up.pt/~sibd/si_2010_2011/Aula_Access2007_03.pdf · SI Macros e Programação VBA 16 / 15 VBA (Visual Basic for Applications) •

Embed Size (px)

Text of Aula Access2007 03.ppt -...

Page 1: Aula Access2007 03.ppt - paginas.fe.up.ptpaginas.fe.up.pt/~sibd/si_2010_2011/Aula_Access2007_03.pdf · SI Macros e Programação VBA 16 / 15 VBA (Visual Basic for Applications) •

SI Macros e Programação VBA 1 / 15

Macros e Programação VBA

Sistemas de InformaçãoMIEM / MIEIG

Page 2: Aula Access2007 03.ppt - paginas.fe.up.ptpaginas.fe.up.pt/~sibd/si_2010_2011/Aula_Access2007_03.pdf · SI Macros e Programação VBA 16 / 15 VBA (Visual Basic for Applications) •

SI Macros e Programação VBA 2 / 15

O que são macros?• São sequências de instruções simples cujo objectivo é automatizar

tarefas de pequena complexidade, como por exemplo:

– Abrir e fechar tabelas, perguntas, formulários e relatórios.– Imprimir dados.– Executar uma pergunta.– Testar condições e controlar o fluxo da acção.– Definir valores.– Procurar dados.– Construir um menu personalizado e executar comandos de

menus.– Controlar a apresentação e o foco.– Informar o utilizador sobre as acções.– Mudar o nome, copiar, eliminar, guardar, importar e exportar

objectos.– Executar outra aplicação.

Page 3: Aula Access2007 03.ppt - paginas.fe.up.ptpaginas.fe.up.pt/~sibd/si_2010_2011/Aula_Access2007_03.pdf · SI Macros e Programação VBA 16 / 15 VBA (Visual Basic for Applications) •

SI Macros e Programação VBA 3 / 15

O que se pretende...

Permite visualizar o autor ou autores deste livro.

Permite adicionar uma operação (empréstimo, por exemplo) a este livro.

Page 4: Aula Access2007 03.ppt - paginas.fe.up.ptpaginas.fe.up.pt/~sibd/si_2010_2011/Aula_Access2007_03.pdf · SI Macros e Programação VBA 16 / 15 VBA (Visual Basic for Applications) •

SI Macros e Programação VBA 4 / 15

P_AutorLivros e F_Autores

Page 5: Aula Access2007 03.ppt - paginas.fe.up.ptpaginas.fe.up.pt/~sibd/si_2010_2011/Aula_Access2007_03.pdf · SI Macros e Programação VBA 16 / 15 VBA (Visual Basic for Applications) •

SI Macros e Programação VBA 5 / 15

Alteração a F_Livros

Page 6: Aula Access2007 03.ppt - paginas.fe.up.ptpaginas.fe.up.pt/~sibd/si_2010_2011/Aula_Access2007_03.pdf · SI Macros e Programação VBA 16 / 15 VBA (Visual Basic for Applications) •

SI Macros e Programação VBA 6 / 15

Macro associada ao botão

[P_AutorLivros]![#Livro]=[Forms]![F_Livros]![#Livro]

Page 7: Aula Access2007 03.ppt - paginas.fe.up.ptpaginas.fe.up.pt/~sibd/si_2010_2011/Aula_Access2007_03.pdf · SI Macros e Programação VBA 16 / 15 VBA (Visual Basic for Applications) •

SI Macros e Programação VBA 7 / 15

Page 8: Aula Access2007 03.ppt - paginas.fe.up.ptpaginas.fe.up.pt/~sibd/si_2010_2011/Aula_Access2007_03.pdf · SI Macros e Programação VBA 16 / 15 VBA (Visual Basic for Applications) •

SI Macros e Programação VBA 8 / 15

F_Operacao e F_Livros

Form Name: F_OperacaoView: FormData Mode: AddWindow Mode: Normal

•ACCESS 2003

Page 9: Aula Access2007 03.ppt - paginas.fe.up.ptpaginas.fe.up.pt/~sibd/si_2010_2011/Aula_Access2007_03.pdf · SI Macros e Programação VBA 16 / 15 VBA (Visual Basic for Applications) •

SI Macros e Programação VBA 9 / 15

Criar uma caixa de pesquisa de registos...

Page 10: Aula Access2007 03.ppt - paginas.fe.up.ptpaginas.fe.up.pt/~sibd/si_2010_2011/Aula_Access2007_03.pdf · SI Macros e Programação VBA 16 / 15 VBA (Visual Basic for Applications) •

SI Macros e Programação VBA 10 / 15

Page 11: Aula Access2007 03.ppt - paginas.fe.up.ptpaginas.fe.up.pt/~sibd/si_2010_2011/Aula_Access2007_03.pdf · SI Macros e Programação VBA 16 / 15 VBA (Visual Basic for Applications) •

SI Macros e Programação VBA 11 / 15

Page 12: Aula Access2007 03.ppt - paginas.fe.up.ptpaginas.fe.up.pt/~sibd/si_2010_2011/Aula_Access2007_03.pdf · SI Macros e Programação VBA 16 / 15 VBA (Visual Basic for Applications) •

SI Macros e Programação VBA 12 / 15

Deve utilizar macros quando...• Não necessitar de tratar erros.• Não necessitar de avaliar ou definir parâmetros

passados por acontecimentos, tais como Confirmar, Confirmar eliminação, Erro, Se não estiver na lista, etc.

• A aplicação contiver poucos formulários e relatórios.• A aplicação se destinar a utilizadores não

programadores, mas que gostariam de a poder alterar e melhorar.

• Estiver a desenvolver um protótipo de uma aplicação e pretender automatizar rapidamente algumas tarefas para demonstração.

Page 13: Aula Access2007 03.ppt - paginas.fe.up.ptpaginas.fe.up.pt/~sibd/si_2010_2011/Aula_Access2007_03.pdf · SI Macros e Programação VBA 16 / 15 VBA (Visual Basic for Applications) •

SI Macros e Programação VBA 13 / 15

Situações em que é necessário usar macros• Definição de acções alternativas para determinados

comandos de teclas: AutoKeys.• Criar uma rotina de arranque: Autoexec.

Page 14: Aula Access2007 03.ppt - paginas.fe.up.ptpaginas.fe.up.pt/~sibd/si_2010_2011/Aula_Access2007_03.pdf · SI Macros e Programação VBA 16 / 15 VBA (Visual Basic for Applications) •

SI Macros e Programação VBA 14 / 15

Bug “Combo Box” Procura• Para que a combo Box de procura funcione a

propriedade “Record source” da Form tem de ser uma tabela ou uma query

•OK

Page 15: Aula Access2007 03.ppt - paginas.fe.up.ptpaginas.fe.up.pt/~sibd/si_2010_2011/Aula_Access2007_03.pdf · SI Macros e Programação VBA 16 / 15 VBA (Visual Basic for Applications) •

SI Macros e Programação VBA 15 / 15

Um exemplo de utilização de programação VBA

Page 16: Aula Access2007 03.ppt - paginas.fe.up.ptpaginas.fe.up.pt/~sibd/si_2010_2011/Aula_Access2007_03.pdf · SI Macros e Programação VBA 16 / 15 VBA (Visual Basic for Applications) •

SI Macros e Programação VBA 16 / 15

VBA (Visual Basic for Applications)• É a linguagem de programação comum às aplicações do Microsoft Office

(Access, Excel, PowerPoint e Word).

• O código VBA é guardado em módulos, que podem ser criados de duas formas:– como um objecto Módulo e– como parte de um objecto Formulário ou Relatório.

• Deve utilizar VBA quando:– Necessitar de lidar com erros numa aplicação.– Pretender definir uma nova função.– Necessitar de criar novos objectos que passem parâmetros ou aceitem

valores de retorno.– Necessitar de criar novos objectos (tabelas, perguntas, formulários ou

relatórios) a partir da aplicação.– A aplicação necessitar de interagir com outras aplicações em Windows.– ...

Page 17: Aula Access2007 03.ppt - paginas.fe.up.ptpaginas.fe.up.pt/~sibd/si_2010_2011/Aula_Access2007_03.pdf · SI Macros e Programação VBA 16 / 15 VBA (Visual Basic for Applications) •

SI Macros e Programação VBA 17 / 15

Exemplo: Editora não existe na BD• Escolher o evento «NotInList» da caixa de combinação

#Editora do formulário F_Livros.

Page 18: Aula Access2007 03.ppt - paginas.fe.up.ptpaginas.fe.up.pt/~sibd/si_2010_2011/Aula_Access2007_03.pdf · SI Macros e Programação VBA 16 / 15 VBA (Visual Basic for Applications) •

SI Macros e Programação VBA 18 / 15

Código do procedimento anteriorPrivate Sub Editora_NotInList(NewData As String, Response As Integer)

Dim StrEditora As StringDim intReturn As Integer

StrEditora = NewDataintReturn = MsgBox("A editora " & StrEditora & " não se encontra na base de dados. Pretende acrescentá-la?", vbQuestion + vbYesNo, "Biblioteca")

If intReturn = vbYes ThenDoCmd.OpenForm FormName:="F_Editora", DataMode:=acFormAdd,

WindowMode:=acDialog, OpenArgs:=StrEditoraIf IsNull(DLookup("Nome", "T_Editora", "[Nome] = """ &

StrEditora & """")) ThenResponse = acDataErrContinue

ElseResponse = acDataErrAdded

End IfExit Sub

End If

Response = acDataErrDisplayEnd Sub

Page 19: Aula Access2007 03.ppt - paginas.fe.up.ptpaginas.fe.up.pt/~sibd/si_2010_2011/Aula_Access2007_03.pdf · SI Macros e Programação VBA 16 / 15 VBA (Visual Basic for Applications) •

SI Macros e Programação VBA 19 / 15

Versão mais simples do procedimentoPrivate Sub Editora_NotInList(NewData As String, Response As

Integer)Dim StrEditora As StringDim intReturn As Integer

StrEditora = NewDataintReturn = MsgBox("A editora " & StrCliente & " não se encontra na base de dados. Pretende acrescentá-la?", vbQuestion + vbYesNo, “Biblioteca")

If intReturn = vbYes ThenDoCmd.OpenForm FormName:="F_Editora", DataMode:=acFormAdd,

WindowMode:=acDialog, OpenArgs:=StrEditoraResponse = acDataErrAddedExit Sub

End If

If intReturn = vbNo ThenintReturn = MsgBox("Operação cancelada!", vbOKOnly,

"Informação")Response = acDataErrContinue

End IfEnd Sub

Page 20: Aula Access2007 03.ppt - paginas.fe.up.ptpaginas.fe.up.pt/~sibd/si_2010_2011/Aula_Access2007_03.pdf · SI Macros e Programação VBA 16 / 15 VBA (Visual Basic for Applications) •

SI Macros e Programação VBA 20 / 15

Um melhoramento...• Se o utilizador pretender adicionar a nova editora o

formulário já deverá aparecer com o campo preenchido. A solução passa pela utilização de um procedimento no evento «OnLoad» do formulário F_Editora.