none
el Datagridview no se esta actualizando al ejecutar el UPDATE RRS feed

  • Pregunta

  • buenas, 

    programo en vb.net

    yo cargo los datos al datagridview con el siguiente método. 

     Public Sub CargarDatosDatagridview()
    
            Using cn As New SqlConnection(cadenaConexion)
                DgvDistribucion.DataSource = Nothing
                Dim consultaSQL As String = " Select Codigo_Usuario as Codigo, Nom_Usu as Nombre_Usaurio, caja as Caja from Tbla_Usuario"
    
                Dim adap As New SqlDataAdapter(consultaSQL, cn)
                adap.Fill(dv)
                Dim dve As DataView = dv.DefaultView
                DgvDistribucion.DataSource = dve
    
            End Using
        End Sub


    yo lleno los Texbox de la siguiente manera


    Public Sub llenarTexbox()
            Dim i As Integer
            i = DgvDistribucion.CurrentRow.Index
    
            txtcodigoUSU.Text = DgvDistribucion.Item(0, i).Value()
            txtNombreUSU.Text = DgvDistribucion.Item(1, i).Value()
            CBocaja.Text = DgvDistribucion.Item(2, i).Value()
        End Sub


    cuando inicia el formulario los métodos de la siguiente manera. 

     Private Sub FrmDistribucionCaja_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            CargarDatosDatagridview()
    
            llenartexbox()
    
        End Sub


    el Datagridview y los texbox, cargan nitido. 

    el problema es que estoy editando

    If accion = "modificar" Then
                Using conexionx As New SqlConnection(cadenaConexion)
                    conexionx.Open()
    
                    Dim actualizar As String = "UPDATE Tbla_Usuario  SET caja =@caja WHERE Codigo_Usuario=@Codigo_Usuario"
                    
                    Using comando As New SqlCommand(actualizar, conexionx)
    
                        comando.Parameters.AddWithValue("@caja", CBocaja.Text.Trim())
                       
                        comando.Parameters.AddWithValue("@Codigo_Usuario", Convert.ToInt64(txtcodigoUSU.Text.Trim()))
                        comando.ExecuteNonQuery()
    
                    End Using
                End Using
    
    
                MsgBox("Actualizado correctamente.", vbInformation, "Correcto")
    
                CargarDatosDatagridview()
    
    
                Me.Habilitar_Entrada(False)
    
            End If

    el problema es que estoy editando, y cargo de nuevo los datos del Datagridview, me explico, cuando el formulario inicia por primera vez, carga 5 registros, y cuando edito y gurados los cambios y carga de nuevo el Datagridview, salen los 5 registros viejos y 5 registros más, es decir que salen 10. 

    al guardar los cambios del UPDATE, el Datagridview, no se está actualizado. 

    espero en Dios que puedan ayudarme. 



    • Editado EliannyRD martes, 23 de mayo de 2017 17:30
    martes, 23 de mayo de 2017 17:29

Respuestas

  • Hola,

    lo puse en la respuesta, cambia la línea en negrita 

      Dim dve As New DataView = dv.DefaultView
    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    • Marcado como respuesta EliannyRD miércoles, 24 de mayo de 2017 16:29
    martes, 23 de mayo de 2017 22:51
  • resuelto 100x%

    me quedó asi: 

        Public Sub CargarDatosDatagridview()
            Dim dv As New DataTable()
            Using cn As New SqlConnection(cadenaConexion)
    
                Dim consultaSQL As String = " Select Codigo_Usuario as Codigo, Nom_Usu as Nombre_Usaurio, caja as Caja from Tbla_Usuario"
    
                Dim adap As New SqlDataAdapter(consultaSQL, cn)
                adap.Fill(dv)
                'Dim dve As DataView = dv.DefaultView
    
            End Using
            DgvDistribucion.DataSource = dv
    
        End Sub

    • Marcado como respuesta EliannyRD miércoles, 24 de mayo de 2017 16:29
    miércoles, 24 de mayo de 2017 16:27

Todas las respuestas

  • Hola Elianny:

    Modifica lo siguiente, a ver si es eso:

    Nom_Usu as Nombre_Usaurio

    Un saludo.

    Gemma

    martes, 23 de mayo de 2017 17:58
  • gracias, pero no es eso,

    el problema es que  al guardar los cambios del UPDATE, el Datagridview, no se está actualizado. 

    martes, 23 de mayo de 2017 18:02
  • Así a bote pronto, tiene buena pinta y da la sensación de que debería funcionar. Debe estar ocurriendo algo que no es evidente a simple vista. Para eso tenemos el debugger. Pon un punto de ruptura y sigue la ejecución paso a paso, viendo lo que hace en cada momento y lo que valen las variables, a ver si encuentras algo que no concuerde con lo que se supone que debería estar ocurriendo. También, en el momento de pasar el ExecuteNonQuery, vete a la base de datos y examina lo que hay a ver si es lo que estaba previsto. Y justo después de ejecutar el Fill, examina el datatable (con el visor de datos del debugger) a ver si ha cargado lo que debe. Con un poco de suerte, a lo largo de este proceso se debería identificar cuál es el punto exacto en el que no ocurre lo que se esperaba. Si a consecuencia del proceso anterior se llega a la conclusión de que el servidor no lee o graba lo que debería, una herramienta más que se puede usar es el Profiler de SQL Server, que sirve para capturar las sentencias recibidas, y sus parámetros, y ahí se puede verificar si efectivamente llega lo que creíamos que debería llegar, o en caso contrario dónde está la discrepancia.
    martes, 23 de mayo de 2017 18:11
  • Hola 

    Debes instancias tu DataView, por ello se están quedando los registros y esta llenando nuevamente en vez de limpiar

    Public Sub CargarDatosDatagridview()
    
            Using cn As New SqlConnection(cadenaConexion)
                DgvDistribucion.DataSource = Nothing
                Dim consultaSQL As String = " Select Codigo_Usuario as Codigo, Nom_Usu as Nombre_Usaurio, caja as Caja from Tbla_Usuario"
    
                Dim adap As New SqlDataAdapter(consultaSQL, cn)
                adap.Fill(dv)
                Dim dve As New DataView = dv.DefaultView
                DgvDistribucion.DataSource = dve
    
            End Using
        End Sub

    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    martes, 23 de mayo de 2017 18:13
  • ok, pero puedes por favor plantear el código. 

    por favor.....

    martes, 23 de mayo de 2017 22:36
  • Hola,

    lo puse en la respuesta, cambia la línea en negrita 

      Dim dve As New DataView = dv.DefaultView
    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    • Marcado como respuesta EliannyRD miércoles, 24 de mayo de 2017 16:29
    martes, 23 de mayo de 2017 22:51
  • buenas, ya lo hice como me dijiste

     Dim dve As New DataView = dv.DefaultView

    en: dv.DefaultView, da un error y dice que la  instrucción  no ha terminado

     
    miércoles, 24 de mayo de 2017 0:41
  • resuelto 100x%

    me quedó asi: 

        Public Sub CargarDatosDatagridview()
            Dim dv As New DataTable()
            Using cn As New SqlConnection(cadenaConexion)
    
                Dim consultaSQL As String = " Select Codigo_Usuario as Codigo, Nom_Usu as Nombre_Usaurio, caja as Caja from Tbla_Usuario"
    
                Dim adap As New SqlDataAdapter(consultaSQL, cn)
                adap.Fill(dv)
                'Dim dve As DataView = dv.DefaultView
    
            End Using
            DgvDistribucion.DataSource = dv
    
        End Sub

    • Marcado como respuesta EliannyRD miércoles, 24 de mayo de 2017 16:29
    miércoles, 24 de mayo de 2017 16:27