Listbox

3 views
Skip to first unread message

Ricky Bizarria

unread,
Oct 23, 2009, 2:25:55 PM10/23/09
to VB6 Brasil
O que ta errado??:

Dim I As Integer

If cbo.ListCount = 0 Then Exit Sub

With cbo
For I = 0 To cbo.ListCount + 1
If .ItemData(I) = Val(lnCodigo) Then
.ListIndex = I
.Text = .List(I)
Exit For
End If
Next I
End With

Ele da erro e num carrega....estranho pois é o ultimo dado da tabela?!

Marcel de Campos Amorim

unread,
Oct 23, 2009, 2:40:27 PM10/23/09
to vb6b...@googlegroups.com

        Boa tarde, Ricky veja esse outro código que faz praticamente a mesma coisa que você está querendo, veja:

Dim TB As Recordset
Dim bd As Database
Set bd = OpenDatabase(App.Path & "\Banco.mdb", False, False, ";pwd=senha")
Set TB = bd.OpenRecordset("Cliente")

List1.Clear

If TB.EOF = False Then
    Do While TB.EOF = False
        List1.AddItem TB("Codigo")
        TB.MoveNext
    Loop
End If
List1.AddItem "NENHUM"
TB.Close
bd.Close

Assim ele carrega os dados da tabela que foram especificados nesta linha  //List1.AddItem TB("Codigo")\\
Espero que ajude.

Marcel de C. Amorim
EuroSoft Informática
E-Mail - marceld...@yahoo.com.br
Site - http://marceldcampostj.blogspot.com/

~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
From: rickyb...@gmail.com
To: marceld...@yahoo.com.br
Date: 15:25:55, 10.23.2009
Subject: [VB6Br] Listbox
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~





>>
>> O que ta errado??:
>>
>> Dim I As Integer
>>
>> If cbo.ListCount = 0 Then Exit Sub
>>
>> With cbo
>> For I = 0 To cbo.ListCount + 1
>> If .ItemData(I) = Val(lnCodigo) Then

>> ..ListIndex = I

Rômulo Nadler

unread,
Oct 26, 2009, 11:08:17 AM10/26/09
to vb6b...@googlegroups.com
O problema é que o ListCount te dá o número total de registros do seu combo Ex.: 5 itens iniciando em 1 (1,2,3,4,5) mas o combobox se inicia com 0 (0,1,2,3,4). Colcusão:
Para resolver seu problema vc precisa colocar cbo.ListCount -1 no seu for.


2009/10/23 Ricky Bizarria <rickyb...@gmail.com>

Henrique Bizarria

unread,
Oct 26, 2009, 12:04:51 PM10/26/09
to vb6b...@googlegroups.com
Obrigado Romulo, mas mesmo assim da erro, voce sabese tem mais alguma opção?
Obrigado!

2009/10/26 Rômulo Nadler <romulo...@gmail.com>

Rômulo Nadler

unread,
Oct 28, 2009, 7:37:21 PM10/28/09
to vb6b...@googlegroups.com
Me passa a rotina com a dica que dei.

2009/10/26 Henrique Bizarria <rickyb...@gmail.com>

Henrique Bizarria

unread,
Oct 29, 2009, 6:06:08 AM10/29/09
to vb6b...@googlegroups.com

Sub SelecionaCombo(cbo As ComboBox, lnCodigo As String)
'Finalidade: Selecionar o item do combo conforme o parametro recebido
On Error GoTo trata_Erro


   
    Dim I As Integer
   
    If cbo.ListCount = 0 Then Exit Sub

    With cbo
         For I = 0 To cbo.ListCount - 1

             If .ItemData(I) = Val(lnCodigo) Then
                .ListIndex = I
                .Text = .List(I)
                Exit For
             End If
          Next I
    End With
Exit Sub
trata_Erro:
    Call Mensagem_de_Erro("SelecionaCombo")
End Sub
 
e essa carrega o combo...
 
Private Sub TXT_Index_LostFocus(Index As Integer)
On Error GoTo trata_Erro
           
   Call Pinta_TextBox_LostFocus(Index)
  
   If Trim(TXT_Index(0)) = "" Then
       TXT_Index(0).Enabled = True
       CB_Nome_Funcionario.Enabled = True
       CB_Nome_Funcionario.ListIndex = -1
   ElseIf Index = 0 Then
       Call SelecionaCombo(CB_Nome_Funcionario, TXT_Index(0).Text)
       If CB_Nome_Funcionario.ListIndex = -1 Then
           gCodigo = TXT_Index(0).Text
           Call Carrega_Tela
           If TXT_Index(2).Text = "" Then
               MDI_RHODB.PA_Mensagem = "Deseja cadastrar cartão provisório ?"
               If MsgBox("Deseja cadastrar cartão provisório ?", vbQuestion + vbYesNo + vbDefaultButton2, Me.Caption) = vbYes Then
                   MDI_RHODB.PA_Mensagem = "Inclusão"
                   Var_Prov = "S"
                   Pan_TXT_Index_2.Enabled = True
                   TXT_Index(2).SetFocus
               Else
                   Call BU_LIMPAR_Click
               Exit Sub
               End If
           ElseIf CB_Nome_Funcionario = "" Then
               MsgBox "Favor verificar.Trata-se de um funcionário que não está mais ativo.", vbCritical, Me.Caption
           End If
       End If
   End If
  
   Exit Sub
  
trata_Erro:
   Call Mensagem_de_Erro("CB_Nome_Funcionario")
End Sub

2009/10/28 Rômulo Nadler <romulo...@gmail.com>
Reply all
Reply to author
Forward
0 new messages