VBA Excel - DAO, ADO e ADOX, atualizando o Front End do Excel

















Sim meus caros, não há caso mais clássico, mesmo após o advento do Power Pivot, do que a utilização no MS Excel, de dados oriundos do MS Access. Divirtam-se

É importante adicionar as referências necessárias de acordo com os objetos que for utilizar.


Efetuaremos uma consulta SQL usando os objetos ADO:

Para este código que usa o objeto ADO, adicionar referência à Microsoft ActiveX Data Objects 2.8 Library

Private Sub Access_ADO()
    
    Dim rs As ADODB.Recordset
    Dim cn As ADODB.Connection
    
    Dim strDB As String
    Dim strSQL As String
    
    Set cn = New ADODB.Connection
    Set rs = New ADODB.Recordset
    
    Let strDB = ThisWorkbook.Path & "\bernardes\Data.accdb"
    Let cn.ConnectionString = _
          "Provider=Microsoft.ACE.OLEDB.12.0;" & _
          "Data Source=" & strDB & ";"
    cn.Open
    
    Let strSQL = _
      "SELECT [tbl_Contacts].Name, [tbl_CRMs].Description " & _
      "FROM [tbl_Contacts] " & _
      "INNER JOIN [tblCores] " & _
      "ON [tbl_Contacts].Description_ID = [tbl_CRMs].Description_ID"
    
    Set rs = cn.Execute(strSQL)
    
    If rs.RecordCount > 0 Then

        Do While Not rs.EOF

            Debug.Print rs.Fields("Name"), rs.Fields("Description")

            rs.MoveNext
        Loop

    End If
    
    rs.Close
    cn.Close

End Sub

Criando um consulta SQL usando os objetos DAO:

Para o objeto DAO, adicionar a referência ao Microsoft DAO 3.5 Library.

Private Sub Access_DAO()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim strSQL As String

    Set db = CurrentDb()

 Let strSQL = _
      "SELECT [tbl_Contacts].Name, [tbl_CRMs].Description " & _
      "FROM [tbl_Contacts] " & _
      "INNER JOIN [tblCores] " & _
      "ON [tbl_Contacts].Description_ID = [tbl_CRMs].Description_ID"
   
Set rs = db.OpenRecordset(strSQL)

   If rs.RecordCount > 0 Then
        Do While Not rs.EOF

           Debug.Print rs.Fields("Name"), rs.Fields("Description")

           rs.MoveNext
        Loop
    End If
End Sub

Executando a consulta SQL usando os objetos ADOX:

Adicione a referência Ext. 2.8 for DDL and Security

Private Sub AccessADOX()
    
    Dim cn As ADODB.Connection
    Dim ct As ADOX.Catalog
    Dim tb As ADOX.Table
    
    Dim strDB As String
    
    Set cn = New ADODB.Connection
    Set ct = New ADOX.Catalog
    
    Let strDB = "c:\bernardes\Data.accdb"
    Let cn.ConnectionString = _
      "Provider=Microsoft.ACE.OLEDB.12.0;" & _
      "Data Source=" & strDB & ";"
    cn.Open
    
    Set ct.ActiveConnection = cn

    For Each tb In ct.Tables

        If tb.Type = "TABLE" Then
            Debug.Print tb.Name
        End If

    Next tb
    
    cn.Close

    Set ct = Nothing
    Set cn = Nothing

End Sub

TagsVBA, Access, Excel, Front End,, ADO, DAO, SQL,

Nenhum comentário:

Postar um comentário

diHITT - Notícias