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 :-)

1 respuesta

Respuesta
1
Un recorset se puede usar siempre que se quiera hacer una actualización de datos como la que comentas. Dan mucha versatilidad, pero si lo que deseas es sencillo no es obligatorio el usarlos. Te aconsejo que practiques un poco con ellos. En cualquier caso, para lo que consultas te vale perfectamente una consulta de actualización de datos que llamas desde un botón de formulario. Lo más sencillo es usar el generador de criterios de la consulta.
Haz lo siguiente. Ten abierto en modo de diseño el formulario donde tienes el registro activo y el botón que usas para ejecutar la consulta. Abre en diseño la consulta. Vete a fila de criterios del campo clave que te permite distinguir el registro activo. Haz click con el botón derecho en esa casilla y en el menú emergente presiona la opción 'Generar'. En la ventana que se presenta escribe lo siguiente. Si el campo clave es de texto comienza escribiendo: Como y deja un espacio en blanco. Si el campo es numérico no escribas Como. A continuación en el árbol de la parte inferior izquierda despliega con doble click la rama Formularios >>> Formularios cargados. Selecciona el formulario del botón. En la siguiente lista selecciona Lista de campos y en la siguiente haz doble click sobre el campo clave del registro. Veras que aparece en la ventana algo así como Formularios![Consulta1]![Id] . Presiona el botón Aceptar para ingresar este criterio a tu consulta. Cuando la ejecutes presionando el botón, la consulta usará como criterio el valor de la clave del registro activo. Si la ejecutas independientemente del formulario te preguntará el valor de ese campo antes de ejecutarse.
Muchas gracias por tu respuesta y por tu rapidez... pero sobre todo por lo certero de la misma!
De momento no he tenido posibilidad de hacer muchas pruebas con muchos registros pero he probado con unos poquitos y aparentemente funciona tal y como yo quería así que supongo que no habrá ningún problema.
La verdad es que no esperaba recibir ninguna contestación antes del fin del puente, y menos por la noche...
Pues sí, algún día supongo que me atreveré con los Recordset pero es que cuando empiezo a leer cosas por ahí y unos hablan de DAO y otros de ADO ya me empiezan a temblar las canillas y apago el ordenador :S
Bueno, no sabía que al finalizar la pregunta también podía hacerte algún comentario pero nada, sólo reiterarte mi agradecimiento por tu rapidez y haber dado en el blanco :-)
Un saludo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas