Notifications
Clear all

[Resolvido] Consulta SQL | Inner Join

5 Posts
3 Usuários
1 Reactions
2,076 Visualizações
(@jalmeida)
Posts: 0
New Member
Topic starter
 

Pessoal, boa noite.

Gostaria de uma ajuda para solução de um erro apresentado no código que escrevi, usando Sql e a cláusula Inner Join. Estou utilizando arquivos excel como Tabelas, em ambiente VBA. Ao rodar o código, traz o erro "Dados não é um nome válido ...". Estou anexando o arquivo para auxílio e ajuda.

Obrigado!

 
Postado : 23/09/2021 6:23 pm
(@anderson)
Posts: 0
New Member
 

As duas planilhas devem estar no mesmo arquivo.

 
Postado : 26/09/2021 10:22 am
(@jalmeida)
Posts: 0
New Member
Topic starter
 

@anderson, Obrigado pelo retorno.

Não é possível fazer a conexão com a tabela de pedidos segregada da tabela dados? No meu caso, os dados que necessito coletar, através do Inner Join, não fazem parte do meu arquivo de dados. São dois arquivos distintos, um fazendo referencia ao outro apenas pelo campo ID. Nesse sentido, não consigo colocar as duas tabelas (planilhas) juntas, pois ambas tem endereços distintos.

Anexei os dois arquivos compactados.

Grato!

 
Postado : 26/09/2021 11:14 pm
(@raygsson)
Posts: 0
New Member
 

@jalmeida

 

Bastou alguns pequenos ajustes, deve ser suficiente pra resolver o seu problema.

 

Att,

Raygsson

 

Option Explicit
Public ConexaoPlan As ADODB.Connection
Public rsConsulta As ADODB.Recordset
Public Sql As String, File As String
Public n As Integer, lin As Integer

Sub StartConnection()

    Set ConexaoPlan = New ADODB.Connection
    Set rsConsulta = New ADODB.Recordset
    File = "Pedido.xlsx"
    n = Range("A1").CurrentRegion.Rows.Count

     ConexaoPlan.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
    "Data Source=" & ThisWorkbook.Path & "\" & File & ";" & _
    "Extended Properties=""Excel 12.0;HDR=YES"";"
    
    lin = 2
    Do While Cells(lin, "A") <> ""
    
        Sql = "SELECT REF From [Pedido$] WHERE ID = '" & Cells(lin, "A") & "'"
        rsConsulta.Open Sql, ConexaoPlan
        
        If Not rsConsulta.EOF Then Cells(lin, "D") = rsConsulta("REF")
        
        rsConsulta.Close
        
    lin = lin + 1
    Loop
    
    ConexaoPlan.Close
    Set rsConsulta = Nothing
    Set ConexaoPlan = Nothing
    
End Sub
 
Postado : 27/09/2021 10:52 pm
JAlmeida reacted
(@jalmeida)
Posts: 0
New Member
Topic starter
 

@raygsson, boa noite.

Mais uma vez, muito obrigado por sua ajuda e colaboração. Sua orientação foi fundamental para solução deste problema. 

Abcs!

 
Postado : 03/10/2021 9:53 pm