Actualización de una tabla con los datos de otra tabla
Publicado por Mercedes (22 intervenciones) el 15/09/2022 22:08:57
Agradeceré ayuda con este tema ya que, la función que utilizo funciona correctamente con dos tablas pero cuando creo otra función igual en el mismo procedimiento (botón del formulario) con otras tablas se produce el siguiente error: “Se ha producido el error 3021 en tiempo de ejecución: No hay ningún registro activo.
La función que da error se llama ProcesarIPC() y usa los campos fecha e índice que se encuentran en la tabla “IndiceIPC” para actualizar la tabla “PrecEsp-Actualizaciones” donde la fecha la de primera coindice con la fecha de la segunda tabla.
La otra función actualiza con una formula el campo FeXIPC de la tabla “PrecEsp-Actualizaciones” que se utiliza luego en la función ProcesarIPC()
_____________________________________________________________________
Private Function ProcesarIPC()
Dim MiSql As String
Dim rstPE As dao.Recordset
Dim rstIPC As dao.Recordset
Dim TIPCf as date
Dim TIPC As Double
Dim FechaXIPC As Date
MiSql = "SELECT * FROM [PrecEsp-Actualizaciones] WHERE IdProcEsp <> 0"
Set rstPE = CurrentDb.OpenRecordset(MiSql)
rstPE.MoveFirst
While Not rstPE.EOF
FechaXIPC = rstPE!FeXIPC
Set rstIPC = CurrentDb.OpenRecordset("SELECT Mes, IPC FROM IndiceIPC
WHERE Mes = #" & FechaXIPC & "#")
rstIPC.Edit
TIPCf = rstIPC!Mes
TIPC = rstIPC!IPC
rstPE.Edit
rstPE!FeIPC = TIPCf
rstPE!IPC = TIPC
rstPE.Update
rstPE.MoveNext
Wend
rstPE.Close
rstIPC.Close
Set rstPE = Nothing
Set rstIPC = Nothing
End Function
____________________________________________________________________
La función que da error se llama ProcesarIPC() y usa los campos fecha e índice que se encuentran en la tabla “IndiceIPC” para actualizar la tabla “PrecEsp-Actualizaciones” donde la fecha la de primera coindice con la fecha de la segunda tabla.
La otra función actualiza con una formula el campo FeXIPC de la tabla “PrecEsp-Actualizaciones” que se utiliza luego en la función ProcesarIPC()
_____________________________________________________________________
Private Function ProcesarIPC()
Dim MiSql As String
Dim rstPE As dao.Recordset
Dim rstIPC As dao.Recordset
Dim TIPCf as date
Dim TIPC As Double
Dim FechaXIPC As Date
MiSql = "SELECT * FROM [PrecEsp-Actualizaciones] WHERE IdProcEsp <> 0"
Set rstPE = CurrentDb.OpenRecordset(MiSql)
rstPE.MoveFirst
While Not rstPE.EOF
FechaXIPC = rstPE!FeXIPC
Set rstIPC = CurrentDb.OpenRecordset("SELECT Mes, IPC FROM IndiceIPC
WHERE Mes = #" & FechaXIPC & "#")
rstIPC.Edit
TIPCf = rstIPC!Mes
TIPC = rstIPC!IPC
rstPE.Edit
rstPE!FeIPC = TIPCf
rstPE!IPC = TIPC
rstPE.Update
rstPE.MoveNext
Wend
rstPE.Close
rstIPC.Close
Set rstPE = Nothing
Set rstIPC = Nothing
End Function
____________________________________________________________________
Valora esta pregunta
0