Visual Basic 6 - Acessando Formulários e Relatórios do Microsoft Access


Será que é possível acessar formulários do MS Access usando o VIsual Basic 6 ?

Bem , eu acho que você já esta cansado de saber que o VB é um verdadeiro 'controle remoto'. Com ele podemos acessar qualquer aplicação que suporta OLE ( Corel Draw, FrontPage , Excel , Access, ...)

Vamos mostrar aqui como abrir formulários e imprimir relatórios de uma aplicação Access via código VB. Como exemplo estaremos usando o banco de dados Nwind.mdb que vêm com o Access. 

Vamos abrir o formulário Categories e imprimir o relatório Catalog.

A uma mágica que você tem que fazer é referênciar no seu projeto ( opção Project|References ) a Microsoft Access 8.0/9.0 Object Library . Pronto.

Agora basta desenhar três botões de comando no seu formulário padrão e inserir o seguinte código no formulário.

Option Explicit

'Declaracoes API
Private Declare Function ShowWindow Lib "user32.dll" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

'Constantes API
Private Const SW_MAXIMIZE = 3
Private Const SW_NORMAL = 1
' faça uma referência a Microsoft Access 8.0/9.0 Object Library
'Cria uma instancia do Access

Dim appAccess As New Access.Application

Public Sub MaximizeAccess()
Dim hWnd As Long

hWnd = FindWindow("OMain", "Microsoft Access")
  If hWnd <> 0 Then
      ShowWindow hWnd, SW_NORMAL
      ShowWindow hWnd, SW_MAXIMIZE
  End If
End Sub


'Abre o formulario Categories
Private Sub Command1_Click()
  appAccess.DoCmd.OpenForm "Categories", acNormal, , , , acDialog
End Sub


'imprimi o relatorio - Catalog
Private Sub Command2_Click()
   appAccess.DoCmd.OpenReport "Catalog", acViewNormal
End Sub


Private Sub Command3_Click()
    MaximizeAccess
End Sub


'abre o banco de dados
Private Sub Form_Load()
    appAccess.OpenCurrentDatabase "C:\teste\nwind.mdb", True
End Sub


Private Sub Form_Unload(Cancel As Integer)
 On Error Resume Next
 appAccess.CloseCurrentDatabase
 appAccess.DoCmd.Quit acQuitSaveNone
End Sub

O jeitão do formulário é o seguinte:(Acho que o código nem precisa ser comentado...)

Ao executar o projeto e clicar no botão para exibir o formulário você verá o formulário Categories aberto.

Da mesma forma, para imprimir o relatório - Catalog - basta clicar no botão correspondente...

Referências:


José Carlos Macoratti