VB .NET - Acessando Relatórios do Microsoft Access
Um desenvolvedor pode trabalhar com um banco de dados do Microsoft Access no Visual Basic .NET usando duas tecnologias separadas:
A automação é uma tecnologia COM. A automação permite que aplicativos que são escritos em linguagens como Visual Basic .NET controle via código outros aplicativos. Quando você automatizar um aplicativo do Microsoft Office, você realmente executa uma instância do aplicativo na memória e, em seguida, recorre ao modelo de objetos do aplicativo para executar várias tarefas no aplicativo. Com o Access e outros aplicativos do Microsoft Office, praticamente todas as ações que você pode executar manualmente através da interface do usuário também podem ser executadas por meio de programação usando automação.
Visual
Studio Tools for Office (VSTO) O VSTO se apresenta como uma ferramenta através da qual você vai poder desenvolver aplicações para o Office usando o Visual Studio e qualquer uma das linguagens que a plataforma suporta; dessa forma você poderá usar a plataforma .NET e a linguagem Visual Basic para criar aplicações Office sem a necessidade de usar o bom e velho VBA. Com isso você vai poder criar aplicações dos tipos suportados pela plataforma .NET e usando as linguagens VB .NET e C# e os recursos do Visual Studio como LINQ, WPF, WCF, suporte ao ClickOnce, enfim, todos os recursos da .NET Framework 3.5 com código gerenciado, ou seja o VSTO pretende unir o útil (Visual Studio) ao agradável(a interface Office). |
Ao automatizar o Microsoft Access, você deve abrir um banco de dados antes de executar tarefas úteis, como impressão de relatórios. Para abrir um banco de dados na instância do Access que você estiver automatizando, você pode usar os métodos OpenCurrentDatabase ou OpenAccessProject do objeto Application . Você pode ter apenas um banco de dados aberto no Access ao mesmo tempo. Para trabalhar com um banco de dados diferente, você pode usar o método CloseCurrentDatabase antes de abrir outro.
Para visualizar ou imprimir um relatório do Access, você chama o método OpenReport do objeto DoCmd . Quando você chama OpenReport (AbrirRelatório), um dos argumentos que você passar determina se o relatório é visualizado na tela ou se é enviado para a impressora:
Observe que o argumento Exibir determina se o
relatório é exibido no Access ou se é enviado para a impressora. O método
OpenReport tem outros argumentos úteis, como WhereCondition que
permite que você limite o conjunto de registros do relatório usando uma cláusula
SQL WHERE válida (sem a palavra onde.)
Se você estiver visualizando um relatório, certifique-se
de definir a propriedade Visible do objeto Application , de modo
que o acesso seja visível na tela. Dessa forma, o usuário pode visualizar o
relatório na janela do Access.
Nota: Se você
estiver abrindo um banco de dados foi protegido com uma senha, você pode
evitar a caixa de diálogo, fornecendo a senha para o método
OpenCurrentDatabase :
'Abrir um banco de dados protegido com senha no
modeo shared ( O argumento bstrPassword é case-sensitive) |
recursos necessários:
Abra o Visual Studio 2012 Express for desktop e no menu File clique em New Project;
A seguir selecione a linguagem VB .NET e o template Windows Forms Application informando o nome AcessandoRelatoriosMsAccess;
No formulário form1.vb inclua os controles :
Defina os controles no formulário conforme o leiaute abaixo:
Agora vamos incluir referências a primary interop assembly (PIA) em nosso projeto.
No menu PROJECT clique em Add Reference e na guia COM selecione Microsoft Access 12.0 Object Library;
Noamente no menu PROJECT clique em Add Reference e na guia COM selecione Microsoft Office 12.0 Object Library;
Estamos usando as duas referências pois vamos precisar de objetos do Core e do Access.
Agora no formulário form1.vb declare o namespace:
Imports
Microsoft.Office.Interop.AccessNo evento Load do formulário defina o código a seguir:
Private Sub Form1_Load(sender As Object, e As EventArgs)
Handles MyBase.Load cboRelatorios.SelectedIndex = 0 End Sub |
A seguir no evento Click do botão de comando inclua o código abaixo:
Private
Sub
btnExecutar_Click(sender As
Object,
e As
EventArgs)
Handles
btnExecutar.Click
Return End IfTry Dim MSA As New Microsoft.Office.Interop.Access.Application MSA.Application.Visible = FalseMSA.OpenCurrentDatabase( "c:\dados\Northwind.mdb", False)If rdbVisualizar.Checked Then MSA.Application.DoCmd.OpenReport(cboRelatorios.Text, AcView.acViewPreview)'maximiza a janela MSA.Application.DoCmd.Maximize() 'oculta a barra de menu MSA.Application.CommandBars( "Menu Bar").Enabled = False'oculta a barra de menu Print Preview MSA.Application.CommandBars( "Print Preview").Enabled = False'Oculta o menu popup do relatorio MSA.Application.CommandBars( "Print Preview Popup").Enabled = FalseElse MSA.Application.DoCmd.OpenReport(cboRelatorios.Text, AcView.acViewNormal)End If Catch ex As ExceptionMessageBox.Show("Erro : " & ex.Message, "Erro ao acessar o objeto", MessageBoxButtons.OK, MessageBoxIcon.Information) End Try End Sub
|
Agora basta executar o projeto, definir o relatório , escolher se deseja visualizar ou imprimir e executar o código:
O relatório será exibido conforme figura abaixo:
Pegue o projeto completo aqui: AcessandoRelatoriosMsAccess.zip
Prv 10:1
Provérbios de Salomão. Um filho sábio alegra a seu pai; mas um filho insensato é a tristeza de sua mae.Prv 10:2
Os tesouros da impiedade de nada aproveitam; mas a justiça livra da morte.Prv 10:3
O Senhor não deixa o justo passar fome; mas o desejo dos ímpios ele rechaça.Prv 10:4
O que trabalha com mão remissa empobrece; mas a mão do diligente enriquece.Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
http://msdn.microsoft.com/en-us/library/15s06t57%28v=vs.100%29.aspx