Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   DBGrid y Transacciones ADO (https://www.clubdelphi.com/foros/showthread.php?t=25912)

Johnny Q 07-10-2005 15:18:16

DBGrid y Transacciones ADO
 
Hola a todos

Es claro que normalmente en una DBGrid se pueden hacer modificaciones, eliminaciones e inserciones directamente, pero me asalta la duda si existe alguna manera en la que este tipo de operaciones se pueda manejar con transacciones o de alguna otra manera. Lo que yo he notado es que la DBGrid hace un post automatico cuando se pasa de una fila a otra.

La pregunta es porque estoy migrando una aplicación que esta en FoxPro 2.6 y alli los usuarios dentro de una grilla hacen basicamente inserciones y modificaciones, y cuando ya tienen listos todos los datos que requieren, los confirman con un boton.

No se si me explique claramente:(

Agradezco cualquier ayuda que me puedan brindar.

vtdeleon 07-10-2005 15:46:05

Saludos

Haciendo una búsqueda (uuf) encontré esto:
Solucion de [b]roman[/]
http://www.clubdelphi.com/foros/show...+clientdataset

vtdeleon 07-10-2005 15:47:20

Saludos

Otra cosa de la cual no me habíá percatado: Este tema no tiene que ver con OOP

Johnny Q 07-10-2005 16:09:01

pido disculpas, lo puse en OOP por la DBGrid.

Revise el link, pero no se si entendi bien, debo trabajar con un ADODataSet en lugar del ADOTable?

vtdeleon 07-10-2005 16:15:33

Saludos

Cita:

Empezado por roman
Otra forma de hacerlo- la recomendada en la ayuda de Delphi -es a través de un Provider y un ClientDataSet. Conectas el Provider al Table o dataset que uses mediante su propiedad DataSet y conectas el ClientDataSet al Provider mediante su propiedad ProviderName. El DBGrid lo conectas a través de un DataSource al ClientDataSet en lugar del Table. Los mismos métodos mencionados antes, ApplyUpdates y CancelUpdates aplican, pero ahora al ClientDataSet.

Nunca se mencionó AdoDataSet, pero si de un Dataset(que puede ser un AdoTable, Table, AdoQuery, Query,...)

Johnny Q 07-10-2005 16:42:07

perdon de nuevo, lo que sucede es que nunca habia utilizado un ClientDataSet y por eso lo estaba confundiendo con el ADODataSet.

Ya entendi como es el asunto y estoy haciendo unas pruebas para ver como funciona.

Gracias Van

Johnny Q 07-10-2005 16:56:34

Dentro de los datos que necesito insertar en la grilla hay un valor autonumerico, pero me lanza un error de violación de llave cuando paso al tercer registro, y el valor autonumerico no se va llenando automaticamente.

Si quito de la tabla el Incremento automatico en SQL Server e ingreso el valor manualmente en la grilla no presenta problemas.

luisgutierrezb 07-10-2005 21:25:01

Pues si usas ADO al crear la forma del grid puedes usar
Conexion.BeginTrans;

y en el boton de aceptar cambios pones:
Conexion.CommitTrans;

y para cancelar cambios:
Conexion.RollbackTrans;

notese que no se refiere a la tabla o query, se refiere al componente de conexion

Johnny Q 07-10-2005 21:53:10

Gracias Luis, la verdad es que los inconvenientes los estoy teniendo con el bendito autonumerico, sea con transacciones o Clientdataset. En las transacciones porque al darle rollback no guarda nada pero si incrementa el autonumerico, y en los Clientdataset no me genera el autonumerico automaticamente.

Sera que me estoy complicando mucho?:confused:


La franja horaria es GMT +2. Ahora son las 11:55:18.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi