Foros del Web » Programación para mayores de 30 ;) » .NET »

Problema con un par de dataset que se tranfieren datos.

Estas en el tema de Problema con un par de dataset que se tranfieren datos. en el foro de .NET en Foros del Web. El programita consiste en lo siguiente: Levanta datos de una tabla (nombres) y los coloca en un datagridview. Hay dos botones en el medio uno ...
  #1 (permalink)  
Antiguo 23/03/2007, 16:00
Avatar de pmuruaga  
Fecha de Ingreso: diciembre-2005
Mensajes: 127
Antigüedad: 18 años, 4 meses
Puntos: 0
Problema con un par de dataset que se tranfieren datos.

El programita consiste en lo siguiente: Levanta datos de una tabla (nombres) y los coloca en un datagridview. Hay dos botones en el medio uno para agregar y otro para quitar. La idea es que al presionar en agregar el/los datos seleccionados desde datagridview de la izq pasen al de la derecha y al presionar quitar haga lo inverso.
Mi solucion fue la siguiente sub:
Código:
Public Sub pasarDeUnDataSetAOtro(ByVal origen As DataGridView, ByVal destino As DataGridView)
        Dim cuantasSelecciono As Integer
        cuantasSelecciono = origen.Rows.GetRowCount(DataGridViewElementStates.Selected)
        Dim ds_origen As DataSet = origen.DataSource
        Dim ds_destino As DataSet = destino.DataSource

        If cuantasSelecciono > 0 Then
            Dim i As Integer
            For i = 0 To cuantasSelecciono - 1
                Dim filaACopiar As DataRow = ds_origen.Tables(0).Rows.Item(origen.SelectedRows(i).Index())
                ds_destino.Tables(0).ImportRow(filaACopiar)
                ds_origen.Tables(0).Rows.Remove(filaACopiar)
            Next
        End If
    End Sub
pero quiero depurarlo un poco, los problemas que me surgen son los siguientes:
-Paso varios datos juntos, 5 luego otros 5 y de repente me salta un problema: El indice estaba fuera del rango.
-Al hacer la consulta levanto los datos ordenados por apellido por ejemplo. Si en el datagridview los ordeno por nombres, al queres pasar un datos, me pasa otro diferente.
-Lo mismo si realizo la operacion inversa.
Alguien podria darme una mano para mejorarlo. Gracias.
  #2 (permalink)  
Antiguo 23/03/2007, 16:57
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 3 meses
Puntos: 1
Re: Problema con un par de dataset que se tranfieren datos.

Tuve un problema parecido y el problema se da porque falta de conocimiento sobre el método Remove

En mi caso era con otro tipo de objeto, pero no recuedo cual.

Si tienes 20 elementos al llamar al método remove quitas un elemento por lo tanto ahora quedan 19. Ahora supente que vas a mover los elementos del 16 al 20, entonces cuando hagas un remove del 16, el 17 se convierte en 16, el 18 en 17, el 19 en 18 y el 10 en 19, por lo tanto provocando que tu ciclo apunte a un elemento inexistente porque ahora ya no hay 20 elementos si 19.

Espero te ayude esa explicación.

Saludes
__________________
Leer es Saber, REEL.
Mi Blog
  #3 (permalink)  
Antiguo 24/03/2007, 15:17
Avatar de pmuruaga  
Fecha de Ingreso: diciembre-2005
Mensajes: 127
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: Problema con un par de dataset que se tranfieren datos.

Ah, bien, tendria que haber pensado un poco, jaja, mchas gracias, me fijo y cualquier cosita te molesto nuevamente.
  #4 (permalink)  
Antiguo 26/03/2007, 12:50
Avatar de pmuruaga  
Fecha de Ingreso: diciembre-2005
Mensajes: 127
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: Problema con un par de dataset que se tranfieren datos.

No me sale, jaja, no entendi bien me parece. Como puedo hacerlo entonces?
  #5 (permalink)  
Antiguo 26/03/2007, 13:36
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 3 meses
Puntos: 1
Re: Problema con un par de dataset que se tranfieren datos.

Si intentas usar la llave primaria de la tabla en lugar del índice de la colección filas.

Saludes
__________________
Leer es Saber, REEL.
Mi Blog
  #6 (permalink)  
Antiguo 26/03/2007, 16:15
Avatar de pmuruaga  
Fecha de Ingreso: diciembre-2005
Mensajes: 127
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: Problema con un par de dataset que se tranfieren datos.

Ahi creo que me quedo bien, al menos hice varias pruebitas y no fallo. Esperemos siga asi, y no cuando venga el jefe se plante, jaja.
Asi fue como me quedo:

Código:
    Public Sub pasarDeUnDataSetAOtro(ByVal origen As DataGridView, ByVal destino As DataGridView)
        Dim cuantasSelecciono As Integer
        cuantasSelecciono = origen.Rows.GetRowCount(DataGridViewElementStates.Selected)

        Dim cuantasTotal As Integer
        cuantasTotal = origen.Rows.GetRowCount(DataGridViewElementStates.Displayed)

        Dim ds_origen As DataSet = origen.DataSource
        Dim ds_destino As DataSet = destino.DataSource

        If cuantasSelecciono > 0 Then
            Dim i As Integer
            For i = 0 To cuantasSelecciono - 1
                Dim valor1 = origen.SelectedRows.Item(0).Cells(0).Value
                Dim j = 0
                For j = 0 To cuantasTotal - 1
                    If ds_origen.Tables(0).Rows(j).Item(0) = valor1 Then
                        Dim filaACopiar As DataRow = ds_origen.Tables(0).Rows.Item(j)
                        ds_destino.Tables(0).ImportRow(filaACopiar)
                        ds_origen.Tables(0).Rows.Remove(filaACopiar)
                        Exit For
                    End If
                Next
            Next
        End If
    End Sub
Muchisimas gracias por la pista reel. Te debo una.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:54.