Notifications
Clear all

[Resolvido] Consulta SQL | Inner Join

5 Posts
3 Usuários
1 Reactions
2,093 Visualizações
(@jalmeida)
Posts: 43
Trusted 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: 203
Reputable Member
 

As duas planilhas devem estar no mesmo arquivo.

Em 90% dos casos em que não se anexa o arquivo, ocorrem mal-entendidos, gerando perda de tempo de ambos os lados.

 
Postado : 26/09/2021 10:22 am
(@jalmeida)
Posts: 43
Trusted 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
(@raygsson)
Posts: 68
Trusted 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: 43
Trusted 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