Notifications
Clear all

Carregar qwery em um array.

6 Posts
4 Usuários
1 Reactions
1,867 Visualizações
(@paulo_001)
Posts: 149
Estimable Member
Topic starter
 

Olá. 

Gostaria de saber se há a possibilidade de carregar um array com uma Workbook.Connection. 

algo do tipo: 

 

Dim Myarray() as variant

 Myarray = ActiveWorkbook.Connection("Conexão_Qwery")

 

 
Postado : 26/10/2020 4:02 pm
(@anderson)
Posts: 203
Reputable Member
 

http://www.planilhando.com.br/forum/vba-macros/atribuir-recordset-a-listbox/

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/10/2020 4:25 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Boa tarde, @paulo_001

Lembre-se que tem que usar Connections (plural) para retornar um membro dessa coleção.

 

3 Opções abaixo:

Sub AtribuiConection()
  Dim Myarray() As Variant
    Myarray = Array(ActiveWorkbook.Connections("Conexão_Qwery"))
  'ou
  Dim MyArray2 As Variant
    Set MyArray2 = ActiveWorkbook.Connections("Conexão_Qwery")
  'ou
  Dim MyConn As WorkbookConnection
    Set MyConn = ActiveWorkbook.Connections("Conexão_Qwery")
End Sub
 

 
Postado : 26/10/2020 4:29 pm
(@paulo_001)
Posts: 149
Estimable Member
Topic starter
 

Boa tarde @EdsonBR

Aplique o exemplo que citou, porém meu array é carregado apenas com os dados da imagem anexo, me parece que são as propriedades da conexão. 

Gostaria de saber se é possível carregar com os dados da conexão mesmo, os que são transferidos para a planilha. 

minha intenção é poder atualizar a connection e realizar as consultas sem ter que despejar os dados em uma guia. 

 

Alguém saberia se isso pode ser feito? 

 
Postado : 03/11/2020 2:42 pm
(@anderson)
Posts: 203
Reputable Member
 

Percorra os registros do RecordSet preenchendo a matriz.

 

 



Private Sub UserForm_Initialize()
Me.ListBox1.ColumnCount = 12

Dim conexao As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String
Dim linhaListbox As Long
Dim matriz() As Variant




conexao = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\ANDERSON\Google Drive\youtube\Curso Excel VBA 2020 Banco de Dados Access.accdb;Persist Security Info=False"

conexao.Open

sql = "Select * From Tabela1 "




rs.Open sql, conexao

linhaListbox = 0
While rs.EOF = False
ReDim matriz(linhaListbox, 12)
rs.MoveNext
linhaListbox = linhaListbox + 1

Wend

rs.MoveFirst

linhaListbox = 0
While rs.EOF = False

matriz(linhaListbox, 0) = rs.Fields("Código")
matriz(linhaListbox, 1) = rs.Fields("Nome")
matriz(linhaListbox, 2) = rs.Fields("Nome2")
matriz(linhaListbox, 3) = rs.Fields("Nome3")
matriz(linhaListbox, 4) = rs.Fields("Nome4")
matriz(linhaListbox, 5) = rs.Fields("Nome5")
matriz(linhaListbox, 6) = rs.Fields("Nome6")
matriz(linhaListbox, 7) = rs.Fields("Nome7")
matriz(linhaListbox, 8) = rs.Fields("Nome8")
matriz(linhaListbox, 9) = rs.Fields("Nome9")
matriz(linhaListbox, 10) = rs.Fields("Nome10")
matriz(linhaListbox, 11) = rs.Fields("Nome11")

rs.MoveNext
linhaListbox = linhaListbox + 1

Wend

Me.ListBox1.List = matriz

rs.Close

conexao.Close


End Sub
Este post foi modificado 4 anos atrás por Anderson

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

 
Postado : 06/11/2020 8:59 pm
(@mikel-silveira-fraga)
Posts: 41
Eminent Member
 
Postado por: @paulo_001

Boa tarde @EdsonBR

Aplique o exemplo que citou, porém meu array é carregado apenas com os dados da imagem anexo, me parece que são as propriedades da conexão. 

Gostaria de saber se é possível carregar com os dados da conexão mesmo, os que são transferidos para a planilha. 

minha intenção é poder atualizar a connection e realizar as consultas sem ter que despejar os dados em uma guia. 

 

Alguém saberia se isso pode ser feito? 

Boa noite a todos os amigos do fórum.

Paulo, por acaso esses dados que esta tentando atribuir a uma Array, esta vindo de uma consulta gerada no Power Query? Normalmente, esse tipo de objeto (Connecton, também chamado de WorkbookConnection), não permite que os dados sejam pelo VBA, pelo menos até hoje nunca vi algo assim. 

Já vi o VBA manipular a Conexão em si, mas não os dados existentes dentro dela, ou melhor dizendo, gerados por ela.

Caso minha suspeita seja confirmada, acredito que a melhor opção para obter um melhor retorno dos dados, seria a sugestão indicada pelo colega Anderson.

De qualquer forma, vou dar uma olhada, pois é bem interessante se conseguir realizar esse tipo de operação.

Fico no aguardo de uma resposta. 

 

Abraço a todos e boa noite.

Esclareceu suas dúvidas? Acrescente ao título do tópico a expressão: [RESOLVIDO].
Mikel Silveira Fraga
E-mail: [email protected]
Skype: mikelsf

 
Postado : 07/11/2020 12:09 am
EdsonBR reacted