Olá,
Estou tentando integrar o excel com o Access,
já consegui extrair algumas informações das tabelas do meu BD do Access através do excel (usando VBA e ADO), montei pesquisas no Access e copiei o código SQL para a macro do Excel, para consultas simples funcionaram perfeitamente, mas para o caso abaixo apresnta o seguinte erro:
Erro em tempo de execução '-2147217900 (80040e14)':
Erro de sintaxe (operador faltando) na expressão de consulta
'subação.CÓDIGOFROM orgao INNER JOIN (subação INNER JOIN
(Poder INNER JOIN Tabela1 ON Poder.CÓDIGO =
Tabela1.Poder_CÓDIGO) ON subação.CÓDIGO =
Tabela1.subação_CÓDIGO) ON orgao.CÓDIGO =
Tabela1.orgao_CÓDIGOWHERE (((Poder.CÓDIGO)=2) AND
((subação.CÓDIGO)=164'.
Alguma dica?
A macro é a seguinte:
Private Sub cmdConexaoBD_Click_3()
Dim sql As String
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim i As Integer
'define a conexão com o banco de dados Northwind.mdb
Set cn = New ADODB.Connection
cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:Usersedilson.lopes.SADDesktopteste_access_exceldados PMRD-Teste3.accdb"
cn.Open
'define um novo objeto recordset
Set rs = New ADODB.Recordset
'define a instrução sql
'sql = "SELECT Orders.CustomerID, Sum([Order Details].UnitPrice) AS ValorTotal, Sum([Order Details].Quantity) AS QuantidadeTotal"
'sql = sql & " FROM (Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID) "
'sql = sql & " GROUP BY Orders.CustomerID"
'sql = sql & " ORDER BY Orders.CustomerID"
sql = "SELECT Poder.CÓDIGO, Poder.PODER, Tabela1.[2014_Sum_Of_LIQUIDADO], subação.CÓDIGO"
sql = sql & "FROM orgao INNER JOIN (subação INNER JOIN (Poder INNER JOIN Tabela1 ON Poder.CÓDIGO = Tabela1.Poder_CÓDIGO) ON subação.CÓDIGO = Tabela1.subação_CÓDIGO) ON orgao.CÓDIGO = Tabela1.orgao_CÓDIGO"
sql = sql & "WHERE (((Poder.CÓDIGO)=2) AND ((subação.CÓDIGO)=1641)) OR (((subação.CÓDIGO)=1642));"
'gera o recordset para o sql sobre a conexao definida
rs.Open sql, cn
'define o cabeçalho das células no excel
Range("A1").Value = "Poder_cod"
Range("B1").Value = "Poder"
Range("C1").Value = "Soma Liquidado 2014"
Range("D1").Value = "SUBAÇÃO_COD"
i = 2
If Not rs.EOF Then
Do While Not rs.EOF
Range("A" & i).Value = rs(0)
Range("B" & i).Value = rs(1)
Range("C" & i).Value = rs(2)
Range("B" & i).Value = rs(3)
rs.MoveNext
i = i + 1
Loop
End If
cn.Close
End Sub
Quando ajuda for útil dê um clique na mãozinha, isso atribui ponto ao colaborador.
Postado : 21/01/2015 4:28 pm