Access - Problema con inserción

 
Vista:

Problema con inserción

Publicado por Edwin (1 intervención) el 16/02/2005 02:38:26
Despues de ejecutar un proceso de calculos para una tablaX, necesito (cada vez que ejecuto el proceso) insertar los registros en una tabla histórica. el problema es que solo me los inserta la primera vez, las demas veces que hago el proceso no me agrega ningún registro. estoy utilizando dbs.execute "Insert into tablaHistorica select * from tablaX" ya me quebre el coco porque si lo hace la 1ra. vez. no lo sigue haciendo. Ayuda porfa
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Insertar registros en una tabla histórica después de ejecutar un proceso repetidamente

Publicado por Alejandro (4142 intervenciones) el 25/05/2023 23:15:54
Si estás ejecutando el proceso de cálculos repetidamente y deseas insertar los registros resultantes en una tabla histórica cada vez que se ejecute, es importante asegurarse de que los nuevos registros no se dupliquen en la tabla histórica. Para lograr esto, puedes utilizar una combinación de consultas y condiciones de búsqueda.

Aquí tienes una posible solución:

1. Asegúrate de que la tabla histórica tiene una columna única o una combinación de columnas que puedas utilizar para evitar duplicados. Por ejemplo, puedes tener una columna de identificación única o una combinación de varias columnas que garanticen la unicidad de los registros.

2. Antes de ejecutar el proceso de cálculos, verifica si los registros que deseas insertar ya existen en la tabla histórica. Puedes hacerlo utilizando una consulta de búsqueda que compare los registros en ambas tablas.

Por ejemplo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Dim dbs As DAO.Database
   Dim rs As DAO.Recordset
   Dim strSQL As String
 
   Set dbs = CurrentDb()
 
   ' Verificar si los registros existen en la tabla histórica
   strSQL = "SELECT * FROM tablaX LEFT JOIN tablaHistorica ON tablaX.ID = tablaHistorica.ID WHERE tablaHistorica.ID IS NULL"
 
   Set rs = dbs.OpenRecordset(strSQL, dbOpenDynaset)
 
   ' Verificar si se encontraron registros nuevos
   If Not rs.EOF Then
       ' Insertar los registros en la tabla histórica
       strSQL = "INSERT INTO tablaHistorica SELECT * FROM tablaX"
       dbs.Execute strSQL
   End If
 
   rs.Close
   Set rs = Nothing
   Set dbs = Nothing

En este ejemplo, se realiza una consulta de búsqueda entre la tabla de origen (`tablaX`) y la tabla histórica (`tablaHistorica`) utilizando una combinación de columnas identificadas por `ID`. La condición `WHERE tablaHistorica.ID IS NULL` selecciona solo los registros que no existen en la tabla histórica.

3. Si se encontraron nuevos registros durante la búsqueda, se ejecuta la instrucción `INSERT INTO` para insertar los registros en la tabla histórica.

Al utilizar esta técnica, solo se insertarán los nuevos registros en la tabla histórica cada vez que se ejecute el proceso de cálculos. Los registros que ya existen en la tabla histórica no se duplicarán.

Espero que esta solución te sea útil para tu caso. ¡Buena suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar