Notifications
Clear all

Preencher listbox com dados do Access

5 Posts
2 Usuários
0 Reactions
1,463 Visualizações
(@wessley)
Posts: 55
Trusted Member
Topic starter
 

Boa tarde.

Esse é o codigo que uso para jogar os dados do recordset na listbox.

________________________________________________________________________________________________
Global banco As Database
Global consulta As Recordset

________________________________________________________________________________________________
Sub Conecta()

'Rotina para fazer a conexão com o Banco de Dados em Access
Set banco = OpenDatabase(CadEmail.Cells(1, 1).Value)

End Sub

________________________________________________________________________________________________
Sub Desconecta()

'Faz a liberação das variáveis objeto do Banco de dados
Set banco = Nothing
Set consulta = Nothing

End Sub

________________________________________________________________________________________________
Sub listaDestinatario()
Conecta
'Populando o listbox
ComandoSQL = "select * from tbEmailDestinatario"
Set consulta = banco.OpenRecordset(ComandoSQL)
linhalistbox = 0
Cadastro.ListBox_Cadastro.Clear
While Not consulta.EOF
With Cadastro.ListBox_Cadastro
.AddItem
.List(linhalistbox, 0) = consulta(0)
End With
linhalistbox = linhalistbox + 1
consulta.MoveNext
Wend
Desconecta
End Sub
________________________________________________________________________________________________

Gostaria de saber como faço para tirar o loop da sub listaDestinatario e colocar o getRows para tentar otimizar o codigo?

 
Postado : 04/03/2017 9:36 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde Wessley,
faz assim, substitua tudo isso:

While Not consulta.EOF
    With Cadastro.ListBox_Cadastro
        .AddItem
        .List(linhalistbox, 0) = consulta(0)
    End With
    linhalistbox = linhalistbox + 1
    consulta.MoveNext
Wend

Por isso:

cadastro.listbox_cadastro.list =  consulta.getrows()

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 05/03/2017 12:16 pm
(@wessley)
Posts: 55
Trusted Member
Topic starter
 

Boa tarde.

Acabei de fazer a alteração no caso só me trouxe apenas 1 registro, sendo que na tabela do access tem 6 o que está dando de errado ?

 
Postado : 05/03/2017 1:56 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Conversei com o Wessley ele está usando DAO ... Esse era o problema...
No DAO o getrows precisa de parâmetro, número de linhas, e o resultado precisa ser transposto ... A linha só trazia um registro pq o listbox estava configurado pra ter uma coluna, assim ele nunca via os outros itens, à direita...

Para corrigir, fiz uma consulta trazendo a quantidade de registros, e utilizei dentro do código proposto acima, transpondo o resultado...
que ficou assim:


cadastro.listbox_cadastro.list =  application.transpose(consulta.getrows(cnt))

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 05/03/2017 2:33 pm
(@wessley)
Posts: 55
Trusted Member
Topic starter
 

realmente matou a pau, funcionou :)

 
Postado : 05/03/2017 4:05 pm