maldito datagrid

13/05/2005 - 12:24 por jose_saxo | Informe spam
buenas
alguien podria decirme como grabo los datos de un datagrid a la tabla de una
base de datos...?
ahh se me olvidaba decir que es con un pocket pc...onde est superlimitado..

Preguntas similare

Leer las respuestas

#1 Tristan
13/05/2005 - 18:56 | Informe spam
Bueno, puede estar limitado pero la forma de lo que quieres es la misma que
para el framework de sobremesa.

Depende de a que tengas enlazado al DataGrid. Imagino que a un DataSet,
¿no?. El dataset es una estructura guardada en memoria. Para actualizar la
base de datos con los cambios del dataset, tienes que llamar al método
Update de tu DataAdapter.

Te recomiendo que antes de maldecir una cosa, dediques un tiempo a
conocerla. Los dataset trabajan de forma desconectada. Una forma muy
diferente a la filosofía de cursores conectados a la que lamentablemente
muchos programadores estan acostumbrados. Necesitarás un tiempo para
adaptarte.

¿Por cierto, que base de datos estás utilizando?

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#2 jose_saxo
16/05/2005 - 09:39 | Informe spam
pues es una .sdf creada desde el codigo del pocket...el problema es que con
el update parece que todo va vien pero a la hora de volver a recuperar los
datos resulta que estan como estaban...y si le agrego algun registro
rebienta...aki esta el codigo a ver q te parece??

Friend Sub grabar(ByVal ds As DataSet)
Dim adapter As New SqlCeDataAdapter("select * from " & nombretabla,
conexion)
'Creamos e inicimos la transaccion
Dim Tran As SqlCeTransaction = conexion.BeginTransaction
'asignamos la transaccion al comando Select del adapter
Try
adapter.SelectCommand.Transaction = Tran
'construimos los demas comandos del adapter (DELETE, INSERT,
UPDATE)
Dim X As New SqlCeCommandBuilder(adapter)
'Actualizamos el DataSet
adapter.Update(ds, nombretabla)
'Confirmamos la transaccion
Tran.Commit()
MsgBox("Datos grabados con éxito")
Catch Ex As SqlCeException
MsgBox(ex.Message, MsgBoxStyle.ApplicationModal)
Tran.Rollback()
Catch Ex As DBConcurrencyException
MsgBox(ex.Message, MsgBoxStyle.ApplicationModal)
Tran.Rollback()
Catch Ex As Exception
MsgBox(ex.Message, MsgBoxStyle.ApplicationModal)
End Try

End Sub
Respuesta Responder a este mensaje
#3 Tristan
16/05/2005 - 22:28 | Informe spam
El problema es que construyes un commandbuilder pero no asignas los comandos
que genera al dataadapter. Es decir, tendría que ser:

Dim X As New SqlCeCommandBuilder(adapter)
adapter.InserCommand = X.GetInsertCommand()
adapter.UpdateCommand = X.GetUpdateCommand()
adapter.DeleteCommand = X.GetDeleteCommand()
'Actualizamos el DataSet
adapter.Update(ds, nombretabla)

Pero yo te reomendaría, y más al principio, que construyas tu dataadapter
utilizando el diseñador winforms, en lugar de mediante un CommandBuilder, a
no ser que sea necesario, claro. Ten en cuenta que el diseñador simplemente
genera código, que puedes optimizar tanto como necesites, con la ventaja de
que escribirás menos código y tendrás menos errores. Además será ligeramente
más eficiente. Solo tienes que arrastrar un DataAdapter a tu formulario y
seguir los pasos.


Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#4 Tristan
16/05/2005 - 22:34 | Informe spam
El problema es que construyes un commandbuilder pero no asignas los comandos
que genera al dataadapter. Es decir, tendría que ser:

Dim X As New SqlCeCommandBuilder(adapter)
adapter.InserCommand = X.GetInsertCommand()
adapter.UpdateCommand = X.GetUpdateCommand()
adapter.DeleteCommand = X.GetDeleteCommand()
'Actualizamos el DataSet
adapter.Update(ds, nombretabla)

Pero yo te reomendaría, y más al principio, que construyas tu dataadapter
utilizando el diseñador winforms, en lugar de mediante un CommandBuilder, a
no ser que sea necesario, claro. Ten en cuenta que el diseñador simplemente
genera código, que puedes optimizar tanto como necesites, con la ventaja de
que escribirás menos código y tendrás menos errores. Además será ligeramente
más eficiente. Solo tienes que arrastrar un DataAdapter a tu formulario y
seguir los pasos.


Juan Carlos Badiola
MVP - C#
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida