[VBNET 2003] Actualización de un DataSet

17/08/2006 - 14:26 por XTV | Informe spam
Hola a todos;

a ver quién me sabe decir con solucionar este problema que tengo; cuando
estoy mostrando datos (de un DataSet) através de un DataGrid y modifico
dichos datos en el DataGrid; me pasa que estos datos datos solo se graban
realmente en la base de datos si me muevo de un registro a otro; pero el
ultimo que modifique no se actualizará a no ser que me mueva a otro registro
antes.

He intentado buscar alguna función en el grid y en el dataSet que me evite
este problema, pero no lo he encontrado (trás de muchos intentos), también
he tratado de hacer que el foco pasará de un row a otro del dataGrid para
que se produzca el efecto esperado, pero no he visto la manera.

Si alguién sabe cómo podria solucionar esto le agradecería mucho su ayuda.

Saludos

XTV

Preguntas similare

Leer las respuestas

#1 meular
17/08/2006 - 14:37 | Informe spam
Hola,

Una forma sería llamar al método Update del DataAdapter al salir del
formuario.

Si quieres envíar los datos el terminar de editar la celda seguramente ese
control tenga algún evento del tipo "LeaveCell" o algo así. Mete el update
en la función que maneje ese evento.

Espero que te sirva,

meular



"XTV" escribió en el mensaje
news:%
Hola a todos;

a ver quién me sabe decir con solucionar este problema que tengo; cuando
estoy mostrando datos (de un DataSet) através de un DataGrid y modifico
dichos datos en el DataGrid; me pasa que estos datos datos solo se graban
realmente en la base de datos si me muevo de un registro a otro; pero el
ultimo que modifique no se actualizará a no ser que me mueva a otro
registro antes.

He intentado buscar alguna función en el grid y en el dataSet que me evite
este problema, pero no lo he encontrado (trás de muchos intentos), también
he tratado de hacer que el foco pasará de un row a otro del dataGrid para
que se produzca el efecto esperado, pero no he visto la manera.

Si alguién sabe cómo podria solucionar esto le agradecería mucho su ayuda.

Saludos

XTV

Respuesta Responder a este mensaje
#2 Roberto Roccha
18/08/2006 - 22:21 | Informe spam
Estimado amigo:

El problema es que debes de cancelar la edición actual para poder actualizar
la base, de lo contrario no ocurrira nada.
intenta un poco esto:

Dim ObSet As nombreaplic.TargeDS = New nombreaplic.TargeDs
Dim UpdatedRows As System.Data.DataSet
Dim InsertedRows As System.Data.DataSet
Dim DeletedRows As System.Data.DataSet

'Cancelamos la edición actual
Me.BindinContex(Me.TargeDs, "NombreTabla").CancelCurrentEdit()
'UpdatedRows = Me.TargeDS.GetChanges(DataRowState.Modified)
InsertedRows = Me.TargeDS.GetChanges(DataRowState.Added)
DeletedRows = Me.TargeDS.GetChanges(DataRowState.Deleted)
'Ponemos los datos en el objeto
ObSet = CType(InsertedRows, Me.DTargeDs)

Me.TargeDs.Merge(ObSet)
Try

If Not UpdatedRows Is Nothing Then
Me.daMovFechas.Update(UpdatedRows)
If Not InsertedRows Is Nothing Then
Me.daMovFechas.Update(InsertedRows)
If Not DeletedRows Is Nothing Then Me.daMovFechas.Update(DeletedRows)
TargeDS.MovCapInternet.AcceptChanges()
Me.MovCapInternet.Update(ObSet)

Catch eUpdate As System.Exception

MsgBox("Ha ocurrido un problema: " & eUpdate.Message)

End Try





"XTV" wrote:

Gracia por tu respuesta, pero el asunto es que más bien el siguiente:

Tengo el form, con el grid. Hago cambios en una fila, y sin moverme pulso sobre el boton de actualizar, que tiene el siguinte código:

Dim UpdatedRows As System.Data.DataSet

Dim InsertedRows As System.Data.DataSet

Dim DeletedRows As System.Data.DataSet



UpdatedRows = Me.TargeDS.GetChanges(DataRowState.Modified)

InsertedRows = Me.TargeDS.GetChanges(DataRowState.Added)

DeletedRows = Me.TargeDS.GetChanges(DataRowState.Deleted)



Try

If Not UpdatedRows Is Nothing Then Me.daMovFechas.Update(UpdatedRows)

If Not InsertedRows Is Nothing Then Me.daMovFechas.Update(InsertedRows)

If Not DeletedRows Is Nothing Then Me.daMovFechas.Update(DeletedRows)

TargeDS.MovCapInternet.AcceptChanges()

Catch eUpdate As System.Exception

MsgBox("Ha ocurrido un problema: " & eUpdate.Message)

End Try



Es decir, en teoria, se deberian de pasar todos los datos modificados a la base de datos, a menos que el problema sea que el grid no actualiza el DataSet hasta que se mueve de una fila a otra.

¿Alguna idea?. Por cierto, estoy usando el TrueDBGrid de Componet One, pero he observado exactamente el mismo problema en el grid standart del framework 1.1

Gracias

XTV

"meular" escribió en el mensaje news:%
> Hola,
>
> Una forma sería llamar al método Update del DataAdapter al salir del
> formuario.
>
> Si quieres envíar los datos el terminar de editar la celda seguramente ese
> control tenga algún evento del tipo "LeaveCell" o algo así. Mete el update
> en la función que maneje ese evento.
>
> Espero que te sirva,
>
> meular
>
>
>
> "XTV" escribió en el mensaje
> news:%
>> Hola a todos;
>>
>> a ver quién me sabe decir con solucionar este problema que tengo; cuando
>> estoy mostrando datos (de un DataSet) através de un DataGrid y modifico
>> dichos datos en el DataGrid; me pasa que estos datos datos solo se graban
>> realmente en la base de datos si me muevo de un registro a otro; pero el
>> ultimo que modifique no se actualizará a no ser que me mueva a otro
>> registro antes.
>>
>> He intentado buscar alguna función en el grid y en el dataSet que me evite
>> este problema, pero no lo he encontrado (trás de muchos intentos), también
>> he tratado de hacer que el foco pasará de un row a otro del dataGrid para
>> que se produzca el efecto esperado, pero no he visto la manera.
>>
>> Si alguién sabe cómo podria solucionar esto le agradecería mucho su ayuda.
>>
>> Saludos
>>
>> XTV
>>
>
>
Respuesta Responder a este mensaje
#3 Rafael Cruz
19/08/2006 - 00:35 | Informe spam
Puedes crear un DataTable y
Me.daMovFechas.Update(DATATABLE.Select("", "",
DataViewRowState.Added))

Me.daMovFechas.Update(DATATABLE.Select("", "",
DataViewRowState.ModifiedCurrent))


:)
Respuesta Responder a este mensaje
#4 XTV
21/08/2006 - 10:12 | Informe spam
Ah, perfecto muchas gracias a ambos, me habeis dado la clave del problema.
Haciendo algunos pequeños ajustes ya he conseguido que funcione.

Saludos

"Roberto Roccha" escribió en el
mensaje news:
Estimado amigo:

El problema es que debes de cancelar la edición actual para poder
actualizar
la base, de lo contrario no ocurrira nada.
intenta un poco esto:

Dim ObSet As nombreaplic.TargeDS = New nombreaplic.TargeDs
Dim UpdatedRows As System.Data.DataSet
Dim InsertedRows As System.Data.DataSet
Dim DeletedRows As System.Data.DataSet

'Cancelamos la edición actual
Me.BindinContex(Me.TargeDs, "NombreTabla").CancelCurrentEdit()
'UpdatedRows = Me.TargeDS.GetChanges(DataRowState.Modified)
InsertedRows = Me.TargeDS.GetChanges(DataRowState.Added)
DeletedRows = Me.TargeDS.GetChanges(DataRowState.Deleted)
'Ponemos los datos en el objeto
ObSet = CType(InsertedRows, Me.DTargeDs)

Me.TargeDs.Merge(ObSet)
Try

If Not UpdatedRows Is Nothing Then
Me.daMovFechas.Update(UpdatedRows)
If Not InsertedRows Is Nothing Then
Me.daMovFechas.Update(InsertedRows)
If Not DeletedRows Is Nothing Then
Me.daMovFechas.Update(DeletedRows)
TargeDS.MovCapInternet.AcceptChanges()
Me.MovCapInternet.Update(ObSet)

Catch eUpdate As System.Exception

MsgBox("Ha ocurrido un problema: " & eUpdate.Message)

End Try





"XTV" wrote:

Gracia por tu respuesta, pero el asunto es que más bien el siguiente:

Tengo el form, con el grid. Hago cambios en una fila, y sin moverme pulso
sobre el boton de actualizar, que tiene el siguinte código:

Dim UpdatedRows As System.Data.DataSet

Dim InsertedRows As System.Data.DataSet

Dim DeletedRows As System.Data.DataSet



UpdatedRows = Me.TargeDS.GetChanges(DataRowState.Modified)

InsertedRows = Me.TargeDS.GetChanges(DataRowState.Added)

DeletedRows = Me.TargeDS.GetChanges(DataRowState.Deleted)



Try

If Not UpdatedRows Is Nothing Then
Me.daMovFechas.Update(UpdatedRows)

If Not InsertedRows Is Nothing Then
Me.daMovFechas.Update(InsertedRows)

If Not DeletedRows Is Nothing Then
Me.daMovFechas.Update(DeletedRows)

TargeDS.MovCapInternet.AcceptChanges()

Catch eUpdate As System.Exception

MsgBox("Ha ocurrido un problema: " & eUpdate.Message)

End Try



Es decir, en teoria, se deberian de pasar todos los datos modificados a
la base de datos, a menos que el problema sea que el grid no actualiza el
DataSet hasta que se mueve de una fila a otra.

¿Alguna idea?. Por cierto, estoy usando el TrueDBGrid de Componet One,
pero he observado exactamente el mismo problema en el grid standart del
framework 1.1

Gracias

XTV

"meular" escribió en el mensaje
news:%
> Hola,
>
> Una forma sería llamar al método Update del DataAdapter al salir del
> formuario.
>
> Si quieres envíar los datos el terminar de editar la celda seguramente
> ese
> control tenga algún evento del tipo "LeaveCell" o algo así. Mete el
> update
> en la función que maneje ese evento.
>
> Espero que te sirva,
>
> meular
>
>
>
> "XTV" escribió en el mensaje
> news:%
>> Hola a todos;
>>
>> a ver quién me sabe decir con solucionar este problema que tengo;
>> cuando
>> estoy mostrando datos (de un DataSet) através de un DataGrid y
>> modifico
>> dichos datos en el DataGrid; me pasa que estos datos datos solo se
>> graban
>> realmente en la base de datos si me muevo de un registro a otro; pero
>> el
>> ultimo que modifique no se actualizará a no ser que me mueva a otro
>> registro antes.
>>
>> He intentado buscar alguna función en el grid y en el dataSet que me
>> evite
>> este problema, pero no lo he encontrado (trás de muchos intentos),
>> también
>> he tratado de hacer que el foco pasará de un row a otro del dataGrid
>> para
>> que se produzca el efecto esperado, pero no he visto la manera.
>>
>> Si alguién sabe cómo podria solucionar esto le agradecería mucho su
>> ayuda.
>>
>> Saludos
>>
>> XTV
>>
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida