ERRO EM ARRAYS

DARIOSALLES 07/11/2012 10:25:44
#413693
Tenho 6 combobox de produtos
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
ALTAIR148 07/11/2012 10:28:49
#413694
Resposta escolhida
Bom dia,

Amigo não seria melhor usar um datagrid para mostrar esses produtos?
DARIOSALLES 07/11/2012 10:31:11
#413695
o problema é que estou usando o mesmo form de cadastro para o de consulta, queria assim, não que seja mais fácil mas eu comecei assim e quero terminar assim, é mais pelo desafio agora.. rs.

ALTAIR148 07/11/2012 10:40:23
#413696
Ok, se queres assim tudo bem... Mas pense em uma possibilidade e se o pedido tiver mais de 6 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
DARIOSALLES 07/11/2012 13:47:15
#413722
Obrigado, resolveu meu problema...
Tópico encerrado , respostas não são mais permitidas