
Actualizar BD a traves de un DataSet Enlazado a un control UltraGrid
Publicado por Plutarco (2 intervenciones) el 09/09/2016 17:48:09
Que tal comunidad:
Quiero referirles mi problema, seguro ha de ser una tarugada, pero no le encuentro solución aún, les describo el problema.
- Me conecto a una BD SQL server 2008 r2
- a través de un dataset traigo la información y la enlazo con un control Ultragrid de Infragistics con el método DataBind
- Hago cambios en el ultragrid
- Actualizo mi dataset con AcceptChanges
- Actualizo la base de datos con la función Update de mi datatable
Resultado: Solo el dataset está actualizado, la BD no sufre ningún cambio.
Para ver que está bien mi código meto un cotrol DataGridView, lo lleno con el mismo dataset con el que lleno el control de UltraGrid, hago cambios en el control de DataGridView, se actualiza el dataset y se refleja en el UltraGrid, actualizo mi BN con el Update mencionado y SI se actualiza la DB.
No se qué estoy hacienod mal.
Alguien puede orientarme?
Quiero usar ultragrid por la facilidad de manejar otros objetos dentro de las celdas del grid
Les pongo el código de lo que estoy haciendo
Private dsPrueba As New DataSet
Private dsGuarda As New DataSet
Private sqlPrueba As New SqlDataAdapter("SELECT p.Identificador, p.Entero1, p.Entero2, p.Entero3, p.Numero1, p.Numero2, p.Numero3, p.Cadena1, p.Cadena2, " _
& "p.Cadena3 FROM Pasito AS p", cnx)
Private MiEnlazador As New BindingSource
Private sTable As DataTable
Private Sub frmPruebas_Load(sender As Object, e As EventArgs) Handles MyBase.Load
dsPrueba.Clear()
dsPrueba.Reset()
sqlPrueba.Fill(dsPrueba)
MiEnlazador.DataSource = dsPrueba.Tables(0)
UltraGrid1.DataSource = MiEnlazador
UltraGrid1.DataBind()
DataGridView1.DataSource = MiEnlazador
UltraGrid1.Rows.Refresh(Infragistics.Win.UltraWinGrid.RefreshRow.ReloadData, True)
UltraGrid1.UpdateMode = UpdateMode.OnCellChange
End Sub
Private Sub btnActualizaBD_Click(sender As Object, e As EventArgs) Handles btnActualizaBD.Click
'sqlPrueba.Update((CType(Me.MiEnlazador.DataSource, DataTable)))
sqlPrueba.Update((CType(dsPrueba.Tables(0), DataTable)))
MsgBox("BD Actualizada")
End Sub
Private Sub UltraGrid1_AfterExitEditMode(sender As Object, e As EventArgs) Handles UltraGrid1.AfterExitEditMode
If dsPrueba.HasChanges Then
UltraGrid1.EndUpdate()
dsPrueba.AcceptChanges()
End If
End Sub
Gracias de antemano
Quiero referirles mi problema, seguro ha de ser una tarugada, pero no le encuentro solución aún, les describo el problema.
- Me conecto a una BD SQL server 2008 r2
- a través de un dataset traigo la información y la enlazo con un control Ultragrid de Infragistics con el método DataBind
- Hago cambios en el ultragrid
- Actualizo mi dataset con AcceptChanges
- Actualizo la base de datos con la función Update de mi datatable
Resultado: Solo el dataset está actualizado, la BD no sufre ningún cambio.
Para ver que está bien mi código meto un cotrol DataGridView, lo lleno con el mismo dataset con el que lleno el control de UltraGrid, hago cambios en el control de DataGridView, se actualiza el dataset y se refleja en el UltraGrid, actualizo mi BN con el Update mencionado y SI se actualiza la DB.
No se qué estoy hacienod mal.
Alguien puede orientarme?
Quiero usar ultragrid por la facilidad de manejar otros objetos dentro de las celdas del grid
Les pongo el código de lo que estoy haciendo
Private dsPrueba As New DataSet
Private dsGuarda As New DataSet
Private sqlPrueba As New SqlDataAdapter("SELECT p.Identificador, p.Entero1, p.Entero2, p.Entero3, p.Numero1, p.Numero2, p.Numero3, p.Cadena1, p.Cadena2, " _
& "p.Cadena3 FROM Pasito AS p", cnx)
Private MiEnlazador As New BindingSource
Private sTable As DataTable
Private Sub frmPruebas_Load(sender As Object, e As EventArgs) Handles MyBase.Load
dsPrueba.Clear()
dsPrueba.Reset()
sqlPrueba.Fill(dsPrueba)
MiEnlazador.DataSource = dsPrueba.Tables(0)
UltraGrid1.DataSource = MiEnlazador
UltraGrid1.DataBind()
DataGridView1.DataSource = MiEnlazador
UltraGrid1.Rows.Refresh(Infragistics.Win.UltraWinGrid.RefreshRow.ReloadData, True)
UltraGrid1.UpdateMode = UpdateMode.OnCellChange
End Sub
Private Sub btnActualizaBD_Click(sender As Object, e As EventArgs) Handles btnActualizaBD.Click
'sqlPrueba.Update((CType(Me.MiEnlazador.DataSource, DataTable)))
sqlPrueba.Update((CType(dsPrueba.Tables(0), DataTable)))
MsgBox("BD Actualizada")
End Sub
Private Sub UltraGrid1_AfterExitEditMode(sender As Object, e As EventArgs) Handles UltraGrid1.AfterExitEditMode
If dsPrueba.HasChanges Then
UltraGrid1.EndUpdate()
dsPrueba.AcceptChanges()
End If
End Sub
Gracias de antemano
Valora esta pregunta


0