PROBLEMA EM LISTAR ITENS DO BANCO EM UMA LISTIBOX

RAFAELMERINI 17/08/2014 22:00:41
#440509
Boa noite pessoal.
Estou com um probleminha em listar os itens de um banco de dados (access) em uma listbox ou combobox.
Por exemplo, se no banco tenho 12 itens para mostrar, quando eu jogo para o listbox ou combobox ele joga apenas 11.
Sempre está ocultando um dos registros.
Estou usando o seguinte código:

  Private Sub atualizaosestados()
Me.cadcli_estado.Items.Clear()
Dim con As OleDbConnection
Dim sql As String
Str = [Ô]Provider=Microsoft.Jet.oledb.4.0;Data Source= [Ô] & form_admpainel.lbl_dblocal.Text & [Ô]db_locais.mdb;[Ô]
con = New OleDbConnection(Str)
sql = [Ô]select uf_abrev from estados[Ô]
Dim cmd As OleDbCommand
Dim r As OleDbDataReader
Try
con.Open()
cmd = New OleDbCommand(sql, con)
r = cmd.ExecuteReader()
If r.Read Then
Do While r.Read
Me.cadcli_estado.Items.Add(r.GetValue(0).ToString())
Loop
Else
MsgBox([Ô]Erro ao carregar[Ô], vbCritical, [Ô]Erro[Ô])
End If
con.Close()
Catch ex As OleDbException
MsgBox(ex.Message, MsgBoxStyle.Critical, [Ô]Oledb Error[Ô])
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, [Ô]General Error[Ô])
End Try
End Sub


Se puderem me ajudar, fico muito grato.

Ótima semana a todos!
TUNUSAT 18/08/2014 09:12:16
#440519
Resposta escolhida
Bom dia RAFAELMERINI,

Experimente trocar esta linha:
If r.Read Then


Por esta linha:
If r.HasRows Then


O [Ô].Read[Ô] faz um salto automático quando invocado.

- O seu exemplo está aqui:
http://msdn.microsoft.com/pt-br/library/haa3afyz(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2

- Como o [Ô].Read[Ô] funciona está explicado aqui:
http://msdn.microsoft.com/query/dev12.query?appId=Dev12IDEF1&l=EN-US&k=k(System.Data.OleDb.OleDbDataReader.Read);k(TargetFrameworkMoniker-.NETFramework,Version%3Dv4.5);k(DevLang-VB)&rd=true

====================================================

Avança o OleDbDataReader para o próximo registro.

Observações
-------------------------------------------------- ------------------------------
A posição padrão do OleDbDataReader é antes do primeiro registro. Portanto, você deve chamar Ler para começar a acessar os dados.
Enquanto o OleDbDataReader está sendo usado, o OleDbConnection associada está ocupado servindo-o até que você chamar Close.

====================================================

[][ô]s,
Tunusat.
RAFAELMERINI 18/08/2014 20:44:16
#440568
Isso mesmo cara, só mudei o .read para o .hashows
Problema resolvido.
Obrigado mesmo :D

Citação:

:
Bom dia RAFAELMERINI,

Experimente trocar esta linha:

If r.Read Then


Por esta linha:
If r.HasRows Then


O [Ô].Read[Ô] faz um salto automático quando invocado.

- O seu exemplo está aqui:
http://msdn.microsoft.com/pt-br/library/haa3afyz(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2

- Como o [Ô].Read[Ô] funciona está explicado aqui:
http://msdn.microsoft.com/query/dev12.query?appId=Dev12IDEF1&l=EN-US&k=k(System.Data.OleDb.OleDbDataReader.Read);k(TargetFrameworkMoniker-.NETFramework,Version%3Dv4.5);k(DevLang-VB)&rd=true

====================================================

Avança o OleDbDataReader para o próximo registro.

Observações
-------------------------------------------------- ------------------------------
A posição padrão do OleDbDataReader é antes do primeiro registro. Portanto, você deve chamar Ler para começar a acessar os dados.
Enquanto o OleDbDataReader está sendo usado, o OleDbConnection associada está ocupado servindo-o até que você chamar Close.

====================================================

[][ô]s,
Tunusat.


Tópico encerrado , respostas não são mais permitidas