ERRO EM ARRAYS
Estou puxando do bd varias linhas de acordo com o numero do pedido e nao sei quantos produtos foram cadastrados para aquele pedido
preciso preencher os combobox de acordo com o numero de produtos que tiver no bd
Estou preenchendo um arraylist com os produtos e verificando se o array estiver vazio entao nao preenche o combobox e só preenche se o array tiver informação. Segue o código abaixo
Citação:[ô]seleciona os produtos de acordo com o n do pedido
sql = [Ô]select * from item_pedido [Ô]
sql += [Ô]where[Ô]
sql += [Ô] npedido = [Ô] & txtcli_npedido.Text & [Ô] and ativado = [ô]S[ô][Ô]
[ô]bloco de tratamento de erro
Try
[ô]abrindo a conexao
cn = New OleDbConnection(strconexao)
cn.Open()
[ô]executando o comando
cmd = New OleDbCommand(sql, cn)
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)
Dim arraylistCProd As New ArrayList
If dr.HasRows Then
Dim contaprodutos As Integer
contaprodutos = 0
[ô]Dim narray As ArrayList
Do While dr.Read()
arraylistCProd.Add(dr([Ô]produto[Ô]))
contaprodutos = contaprodutos + 1
[ô]dr.NextResult()
Loop
contaprodutos = arraylistCProd.Count
For ni As Integer = 0 To contaprodutos
[ô]arraylistCProd(ni) = arraylistCProd.Item(ni)
[ô]cbcli_produto1.Text = arraylistCProd(ni)
Dim prod(ni) As String
Next
If arraylistCProd.Item(0) <> [Ô][Ô] Then
cbcli_produto1.Text = arraylistCProd.Item(0)
End If
If arraylistCProd.Item(1) <> [Ô][Ô] Then
cbcli_produto2.Text = arraylistCProd.Item(1)
End If
If arraylistCProd.Item(2) <> [Ô][Ô] Then
cbcli_produto3.Text = arraylistCProd.Item(2)
End If
If arraylistCProd.Item(3) <> [Ô][Ô] Then
cbcli_produto4.Text = arraylistCProd.Item(3)
End If
If arraylistCProd.Item(4) <> [Ô][Ô] Then
cbcli_produto5.Text = arraylistCProd.Item(4)
End If
If arraylistCProd.Item(5) <> [Ô][Ô] Then
cbcli_produto6.Text = arraylistCProd.Item(5)
End If
Else
MsgBox([Ô]Nenhum produto com o número do pedido selecionado[Ô])
End If
Catch [ô]tratando o erro
[ô]fechando a conexao
cn = Nothing
[ô]mostrando o erro
MsgBox(Err.Description)
End Try
o Erro é o seguinte: O Ãndice estava fora do intervalo. Ele deve ser não negativo e menor que o tamanho da coleção
Nome do parametro: index
O erro ocorre na linha
If arraylistCProd.Item(3) <> [Ô][Ô] Then
cbcli_produto4.Text = arraylistCProd.Item(3)
End If
Pois no bd tem 3 registros - linhas de produtos
Faço a comparação se o arraylistCprod.Item(3) for diferente de vazio entao ele preenche o combo mas da o erro.
O que pode ser?
segue tela abaixo
http://www.agrocultivo.com.br/vb/erro_array.jpg
Amigo não seria melhor usar um datagrid para mostrar esses produtos?
Veja se essa gambiarra ai te ajuda.
For x = 0 To arraylistCProd.Count - 1
if x = 0 to then
cbcli_produto1.Text = arraylistCProd.Item(x)
End If
if x = 1 to then
cbcli_produto2.Text = arraylistCProd.Item(x)
End If
if x = 2 to then
cbcli_produto3.Text = arraylistCProd.Item(x)
End If
if x = 3 to then
cbcli_produto4.Text = arraylistCProd.Item(x)
End If
if x = 4 to then
cbcli_produto5.Text = arraylistCProd.Item(x)
End If
if x = 5 to then
cbcli_produto6.Text = arraylistCProd.Item(x)
End If
next