tengo problemas para eliminar un item en listview

31/03/2005 - 15:35 por Marta | Informe spam
miren este es el codigo que uso:

Private Sub btnCarpetas_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
btnCarpetas.Click
Dim sql As String
Dim cmd_insert As New OdbcCommand
Dim i As Integer
Try
cn.Open()
Dim sql2 As String = "insert into envios
(nombre,descripcion,asunto,cuerpo,fecha) values ('" &
txtnombre.Text & "','" & txtDescripcion.Text & "','" &
txtAsunto.Text & "','" & txtcuerpo.Text & "',now())"
cmd_insert.CommandText = sql2
cmd_insert.Connection = cn
cmd_insert.ExecuteNonQuery()
sql2 = "select currval('envios_envio_id_seq')
as id_actual"
cmd_insert.CommandText = sql2
Dim dr As OdbcDataReader
dr = cmd_insert.ExecuteReader
dr.Read()
id_actual = dr.Item("id_actual")
dr.Close()
cn.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
Try
cn.Open()
For i = 0 To lvcarpetas.Items.Count - 1
If lvcarpetas.Items.Item(i).Selected Then
sql = "insert into carpetas_envios
(carpeta_id,envio_id) values (" & lvcarpetas.Items.Item
(i).SubItems(1).Text & "," & id_actual & ")"
cmd_insert.Connection = cn
cmd_insert.CommandText = sql
cmd_insert.ExecuteNonQuery()
If lvcarpetas.Items.Count > 0 Then
lvcarpetas.Items.Item(i).Remove()
End If
End If
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
cn.Close()
End Sub

Pero solo me funciona si elimino desde el ultimo de la
lista, si borro el primero me da el siguiente error:

El argumento especificado esta fuera del intervalo de
valores validos. Nombre del parametro:4 no es un valor
valido para 'displayIndex'
 

Leer las respuestas

#1 Carlos Gómez
31/03/2005 - 16:56 | Informe spam
ese error puede ser debido a que estas intentando acceder a un elemento del
listview que no existe. ¿en que linea concreta da el error?, que se ha
ejecutado antes... con solo poner el código hay pocas pistas de que está
sucediendo realmente. De todas formas, quita el bucle for y cambialo por un
while, ya que el valor de lvcarpetas.items.count varía dentro del bucle.
Puede ser que ese sea el problema
"Marta" escribió en el mensaje
news:10dc01c535f6$90c0d270$
miren este es el codigo que uso:

Private Sub btnCarpetas_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
btnCarpetas.Click
Dim sql As String
Dim cmd_insert As New OdbcCommand
Dim i As Integer
Try
cn.Open()
Dim sql2 As String = "insert into envios
(nombre,descripcion,asunto,cuerpo,fecha) values ('" &
txtnombre.Text & "','" & txtDescripcion.Text & "','" &
txtAsunto.Text & "','" & txtcuerpo.Text & "',now())"
cmd_insert.CommandText = sql2
cmd_insert.Connection = cn
cmd_insert.ExecuteNonQuery()
sql2 = "select currval('envios_envio_id_seq')
as id_actual"
cmd_insert.CommandText = sql2
Dim dr As OdbcDataReader
dr = cmd_insert.ExecuteReader
dr.Read()
id_actual = dr.Item("id_actual")
dr.Close()
cn.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
Try
cn.Open()
For i = 0 To lvcarpetas.Items.Count - 1
If lvcarpetas.Items.Item(i).Selected Then
sql = "insert into carpetas_envios
(carpeta_id,envio_id) values (" & lvcarpetas.Items.Item
(i).SubItems(1).Text & "," & id_actual & ")"
cmd_insert.Connection = cn
cmd_insert.CommandText = sql
cmd_insert.ExecuteNonQuery()
If lvcarpetas.Items.Count > 0 Then
lvcarpetas.Items.Item(i).Remove()
End If
End If
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
cn.Close()
End Sub

Pero solo me funciona si elimino desde el ultimo de la
lista, si borro el primero me da el siguiente error:

El argumento especificado esta fuera del intervalo de
valores validos. Nombre del parametro:4 no es un valor
valido para 'displayIndex'

Preguntas similares