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'

Preguntas similare

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$
Mostrar la cita
#2 Marta
31/03/2005 - 19:15 | Informe spam
Gracias, pero While que tendrias que poner mientras alla
elementos en el listview???
el error se produce al hacer click en el boton cuando
tengo seleccionado el item que quiero eliminar.

Saludos,

Marta
Mostrar la cita
acceder a un elemento del
Mostrar la cita
error?, que se ha
Mostrar la cita
pistas de que está
Mostrar la cita
for y cambialo por un
Mostrar la cita
dentro del bucle.
Mostrar la cita
en el mensaje
Mostrar la cita
('envios_envio_id_seq')
Mostrar la cita
Then
Mostrar la cita
()
Mostrar la cita
#3 Carlos Gómez
01/04/2005 - 05:11 | Informe spam
dim i as integer=0
while i<lvCarpetas.Items.Count
...
end while

"Marta" escribió en el mensaje
news:122a01c53615$3d89eeb0$
Gracias, pero While que tendrias que poner mientras alla
elementos en el listview???
el error se produce al hacer click en el boton cuando
tengo seleccionado el item que quiero eliminar.

Saludos,

Marta
Mostrar la cita
acceder a un elemento del
Mostrar la cita
error?, que se ha
Mostrar la cita
pistas de que está
Mostrar la cita
for y cambialo por un
Mostrar la cita
dentro del bucle.
Mostrar la cita
en el mensaje
Mostrar la cita
('envios_envio_id_seq')
Mostrar la cita
Then
Mostrar la cita
()
Mostrar la cita
#4 Carlos Gómez
01/04/2005 - 06:38 | Informe spam
"Carlos Gómez" escribió en el mensaje
news:
Mostrar la cita
i = i + 1
Mostrar la cita
#5 Steven Lewis
02/04/2005 - 19:09 | Informe spam
El problema radica en que el lvcarpetas.Items.Count lo obtienes con los
ítems completos, pero al quitar 1, el count disminuye, sin embargo sigues
teniendo el valor antiguo. Cuando llega al ítem final (luego de eliminar 1)
resulta que ese item final no existe dentro de la colección (porque el count
es realemtne count - 1).

Te sugeriría que no eliminaras un item de cualquier colección dentro de un
ciclo que cuente sus items, sino que cambies esa lógica por otra cosa. Como
por ejemplo, marcar la posición y hacerlo fuera del ciclo, o hacer el ciclo
desde atrás para adelante.

Saluds

Steven Lewis

"Marta" escribió en el mensaje
news:10dc01c535f6$90c0d270$
Mostrar la cita
Ads by Google
Search Busqueda sugerida