Visual Basic.NET - Actualizar BD a traves de un DataSet Enlazado a un control UltraGrid

 
Vista:
sin imagen de perfil

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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Diego
Val: 605
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Actualizar BD a traves de un DataSet Enlazado a un control UltraGrid

Publicado por Diego (190 intervenciones) el 15/09/2016 03:49:34
Hola, deberías establecer el updateCommand de tu sqlDataAdapter, en ninguna parte del código se define.
Podes utilizar un CommandBuilder para facilitar la creacion de los comandos. Y debería ejecutar el .update del dataAdapter antes que el .acceptchanges del dataset. Sino, al momento del .update se inicializan todos los rowState de la tabla en memoria.

Espero haber sido claro.
Saludos y +bytes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Actualizar BD a traves de un DataSet Enlazado a un control UltraGrid

Publicado por Plutarco (2 intervenciones) el 15/09/2016 16:47:13
Bastante claro, lo voy a realizar y te comento el resultado, muchas gracias por la orientación, aunque estoy seguro que ya había probado lo que me dices, pero no estoy muy seguro, yo te comento.

Salud2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar