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)
-   -   actualizar tabla al insertar en otra tabla (https://www.clubdelphi.com/foros/showthread.php?t=65263)

hybrid 01-12-2009 18:57:51

actualizar tabla al insertar en otra tabla
 
hola,

me gustaria saber si es posible actualizar el registro de una tabla al hacer un post en otra utilizando lo de master/detail.

gracias!

rgstuamigo 01-12-2009 19:02:07

Cita:

Empezado por hybrid (Mensaje 347880)
hola,

me gustaria saber si es posible actualizar el registro de una tabla al hacer un post en otra utilizando lo de master/detail.

gracias!

No te entiendo mucho lo que pretendes hacer..danos un poco mas de detalles.;)
Que es exactamente lo que deseas hacer?
Saludos...:)

hybrid 01-12-2009 19:08:07

me gustaria actualizar un registro de la tabla 'compras_cliente' donde tengo el numero de compras de cada cliente, al hacer un cliente una compra

es decir... al hacer un post(insert) en la tabla 'compras' me gustaria que se actualizara un campo de la tabla 'compras_cliente' con un update

es posible?

rafita 01-12-2009 19:15:58

Hola,

Pues depende que gestor de bases de datos utilices.
Por lo que yo conozco, la mayoría permiten "disparadores" o "tiggers" que son funciones asociadas a las tablas, y que el gestor de base de datos ejecuta automáticamente según tus necesidades.

En tu caso necesitas un disparador BEFORE INSERT ....

Saludos

hybrid 01-12-2009 19:16:46

es access... creo q no hay disparadores en access

rgstuamigo 01-12-2009 19:30:28

Entonces puedes usar los eventos BeforePost ó AfterPost de tu DataSet(Query,Table).depende sea tu caso;)
Saludos...:)

hybrid 01-12-2009 19:32:21

muchas gracias!! si es lo q estaba pesando hacer... pero m interesa mas hacerlo despues del update...

hay algun evento q salte al ejecutar un execSQL¿?

rgstuamigo 01-12-2009 19:38:13

Pregunto
 
Cita:

Empezado por hybrid (Mensaje 347888)
muchas gracias!! si es lo q estaba pesando hacer... pero m interesa mas hacerlo despues del update...

hay algun evento q salte al ejecutar un execSQL¿?

¿Que componentes estas usando?
¿Como haces las actualizacion mediante codigo SQL o usando los metodos propios de tu DataSet?:confused:.
Saludos...:)

hybrid 01-12-2009 19:49:13

un adoquery con el que haria el execsql (update)
un adotable con el q haria un post.

el update lo hago con sentencia sql y el insert con post...

la idea seria...

1.-update en una tabla con sentenciasql
2.-post en la otra tabla

rgstuamigo 01-12-2009 20:02:34

Entonces luego de hacer el ExecSQL poné ADOtable.Post. y ya...;)

hybrid 01-12-2009 20:13:59

es q eso es lo q hago... pero m da un error....
'No se puede agregar o cambiar el registro porque se necesita un registro relacionado en la tabla COMPRAS_CLIENTE'

por eso he pensado q hacerlo manualmente era incorrecto... y q seria algo mas parecido a un trigger, por eso lo del onpost... m habia sonado bien

rgstuamigo 01-12-2009 20:23:14

Cita:

Empezado por hybrid (Mensaje 347897)
es q eso es lo q hago... pero m da un error....
'No se puede agregar o cambiar el registro porque se necesita un registro relacionado en la tabla COMPRAS_CLIENTE'

por eso he pensado q hacerlo manualmente era incorrecto... y q seria algo mas parecido a un trigger, por eso lo del onpost... m habia sonado bien

Entonces quiere decir que primero debes insertar el master y luego el detalle,(Cambia el orden primero el post y luego el ExecSQL) aunque debes tener cuidado al hacer la actualizacion justo por lo que acabas de mencionar (las referencias foraneas).
El criterio que yo uso para esos casos es:
Cita:

* Si voy a insertar un nuevo registro pues inserto primero el Master y luego el detalle
*Si voy a actualizar un registro elimino todos los detalles de ese registro ,edito el master y luego nuevamente inserto el detalle;claro esta que yo trabajo con transacciones y desde luego no siempre es adecuado hacerlo asi.;)
*Si voy a eliminar un registro pues elimino primero el detalle y luego el master.
Espero que te sea de utilidad.:)

hybrid 01-12-2009 20:24:27

gracias!! ahora cambiar el orden a ver q tal

hybrid 01-12-2009 22:12:53

ya esta... aunke esto tampoco me libera de que dos usuarios agregen al mismo tiempo y pum....

existen transacciones en access?

rgstuamigo 02-12-2009 15:09:13

Cita:

Empezado por hybrid (Mensaje 347920)
...
existen transacciones en access?

Chequea las siguientes propiedades del Componente ADOConnection.;)
Código Delphi [-]
ADOConnection1.BeginTrans;
ADOConnection1.CommitTrans;
ADOConnection1.RollbackTrans;
ADOConnection1.InTransaction;
Mejor si lees la ayuda de Delphi o un manual al respecto.;)
Saludos...:)


La franja horaria es GMT +2. Ahora son las 13:49:07.

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