Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

delley

ListBox / ComboBox

Recommended Posts

Olá para todos!Sou novo neste forum e como programador visual basic e recentimentetive um problema num listbox.o problema e o seguinte: o meu listbox armazena todos os cliente de um banco de dados e de um tempo pracá começou a dar o seguinte erro:Run-time error '381':invalid property array indexEu acho que é por causa da quantidade de itens que estou passando para o ListBox, mas não tenho certeza, por isso gostaria de saber qual o número máximo de itens que um listbox suportaObs.: o db tem cerca de 33 mil clientes.[delley]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá para todos!

 

Sou novo neste forum e como programador visual basic e recentimente

tive um problema num listbox.

 

o problema e o seguinte: o meu listbox armazena todos os cliente de um banco

de dados e de um tempo pracá começou a dar o seguinte erro:

 

Run-time error '381':

invalid property array index

 

Eu acho que é por causa da quantidade de itens que estou passando para o ListBox, mas não tenho certeza, por isso gostaria de saber qual o número máximo de itens que um listbox suporta

 

Obs.: o db tem cerca de 33 mil clientes.

 

[delley]

<{POST_SNAPBACK}>

Fiz um teste aqui com 50000 itens e a listbox aceitou direitinho. De qualquer forma, você pode experimentar uma ListView ao invés de uma ListBox e veja se funciona corretamente.

 

Abraços,

 

Graymalkin

Compartilhar este post


Link para o post
Compartilhar em outros sites

Graymalkin, obrigado pela resposta

 

Vou colocar parte do codigo para análise

 

Private Sub Form_Load()    Dim i As Long        condicao = ""        Select Case Opcao    Case 1, 5, 7 'Cliente/Cliente-Parcela        Me.Caption = "Busca por Nome [Cliente]"        Retorno = Ch_Pessoa.Seleciona_Cliente(condicao)    Case 2, 6 'Devedor        Me.Caption = "Busca por Nome [Devedor]"        Retorno = Ch_Pessoa.Seleciona_Devedor(condicao)    Case 3 'Avalista        Me.Caption = "Busca por Nome [Avalista]"        Retorno = Ch_Pessoa.Seleciona_Avalista(condicao)    Case 4 'Cobrador        Me.Caption = "Busca por Nome [Cobrador]"        Retorno = Ch_Pessoa.Seleciona_Cobrador(condicao)    Case 8 'cpf        Me.Caption = "Busca por C.P.F."        Retorno = Ch_Pessoa.Seleciona_Cpf(condicao)    Case 9 'cgc        Me.Caption = "Busca por C.N.P.J."        Retorno = Ch_Pessoa.Seleciona_Cgc(condicao)    End Select      'Se retornar alguma Pessoa, preencher a lista    If Not IsEmpty(Retorno) Then        For i = 0 To UBound(Retorno, 2)            If Opcao = 1 Or Opcao = 5 Or Opcao = 7 Then                LST_Nome.AddItem Retorno(3, i)            ElseIf Opcao = 8 Then                LST_Nome.AddItem Retorno(4, i)            ElseIf Opcao = 9 Then                LST_Nome.AddItem Retorno(3, i)            Else                LST_Nome.AddItem Retorno(1, i)            End If            LST_Nome.ItemData(LST_Nome.NewIndex) = Retorno(0, i)        Next i    End IfEnd Sub

 

[delley]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz um teste aqui com 50000 itens e a listbox aceitou direitinho. De qualquer forma, você pode experimentar uma ListView ao invés de uma ListBox e veja se funciona corretamente.

 

Abraços,

 

Graymalkin

<{POST_SNAPBACK}>

Graymalkin, fiz um teste aqui e o meu listbox só aceitou 32766!

 

olha o código

 

Private Sub Command1_Click()i = 0While List1.ListCount <= 50000    List1.AddItem i, i    i = i + 1WendEnd Sub
há, estou usando a versão 6 do vb

 

até mais

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Fiz um teste aqui com 50000 itens e a listbox aceitou direitinho. De qualquer forma, você pode experimentar uma ListView ao invés de uma ListBox e veja se funciona corretamente.

 

Abraços,

 

Graymalkin

<{POST_SNAPBACK}>

Graymalkin, fiz um teste aqui e o meu listbox só aceitou 32766!

 

olha o código

 

Private Sub Command1_Click()i = 0While List1.ListCount <= 50000    List1.AddItem i, i    i = i + 1WendEnd Sub
há, estou usando a versão 6 do vb

 

até mais

<{POST_SNAPBACK}>

Sim, ListCount é um inteiro, por isso fica negativo quando ultrapassa seu máximo e além disso, o segundo parâmetro de AddItem (por ser um inteiro) não recebe um valor maior que 32768. Entretanto, veja que isso aqui dá certo:

 

i = 0For i = 0 To 50000   List1.AddItem iNext i
Faça o teste aí.

 

Abraços,

 

Graymalkin

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.