Insertar registro en tabla de histórico
Tengo una bd con la tabla lead de clientes y una tabla llamada acciones que es una especie de histórico de la actividad de cada lead, y que tiene como clave externa la clave principal de lead. También hay una tabla llamada tblestado_lead que recoge los distintos estados que puede tener un lead.
Tengo un formulario "frmlead" con los datos de lead y a su vez un subformulario "subacciones" que me muestra las acciones por lead.
Básicamente lo que quiero es que, cada vez que se me actualice el valor de un control (concretamente es un grupo de opciones llamado "marco47"), se me inserte un registro nuevo en la tabla acciones. Para ello he creado una consulta de datos anexados que se ejecuta al clicar en un botón, pero aquí me surge un problema:
La consulta tiene un código tal que así:
insert into acciones ( id_lead, id_estado, estado, observaciones, id_tipo_acción ) select lead.id_lead, lead.id_estado_lead, tblestado_lead.estado_lead, "cambio de estado" as expr1, 2 as expr2 from tblestado_lead inner join lead on tblestado_lead.id_estado_lead = lead.id_estado_lead
Con esta consulta al ejecutarse me añade registros a la tabla acciones de todos los leads, no sólo del que está activo en el formulario en ese momento.
Para hacer esto se me ocurren dos alternativas:
o sustituir esta consulta por una para un solo registro tipo insert into tabla (field1, field2) values (value1, value2)
o añadir una cláusula where donde le especificara a la query que el id_lead = "registro activo"
Pero en cualquiera de los dos casos no sé cómo referirme al registro activo.
No sé si creando un recordset esto sería más sencillo, lo cierto es que soy muy nuevo en esto y no estoy nada familiarizado con los recordset, ni sé cuándo se deben usar o no ni cómo se usan así que no me atrevo con ellos...
A lo mejor mi planteamiento es totalmente erróneo y hay maneras más sencillas de crear tablas de "histórico", acepto sugerencias :-)
Tengo un formulario "frmlead" con los datos de lead y a su vez un subformulario "subacciones" que me muestra las acciones por lead.
Básicamente lo que quiero es que, cada vez que se me actualice el valor de un control (concretamente es un grupo de opciones llamado "marco47"), se me inserte un registro nuevo en la tabla acciones. Para ello he creado una consulta de datos anexados que se ejecuta al clicar en un botón, pero aquí me surge un problema:
La consulta tiene un código tal que así:
insert into acciones ( id_lead, id_estado, estado, observaciones, id_tipo_acción ) select lead.id_lead, lead.id_estado_lead, tblestado_lead.estado_lead, "cambio de estado" as expr1, 2 as expr2 from tblestado_lead inner join lead on tblestado_lead.id_estado_lead = lead.id_estado_lead
Con esta consulta al ejecutarse me añade registros a la tabla acciones de todos los leads, no sólo del que está activo en el formulario en ese momento.
Para hacer esto se me ocurren dos alternativas:
o sustituir esta consulta por una para un solo registro tipo insert into tabla (field1, field2) values (value1, value2)
o añadir una cláusula where donde le especificara a la query que el id_lead = "registro activo"
Pero en cualquiera de los dos casos no sé cómo referirme al registro activo.
No sé si creando un recordset esto sería más sencillo, lo cierto es que soy muy nuevo en esto y no estoy nada familiarizado con los recordset, ni sé cuándo se deben usar o no ni cómo se usan así que no me atrevo con ellos...
A lo mejor mi planteamiento es totalmente erróneo y hay maneras más sencillas de crear tablas de "histórico", acepto sugerencias :-)
1 Respuesta
Respuesta de Angel Navales
1