Access - Actualizar Campo SI/NO en una tabla maestra desde otra tabla

 
Vista:
sin imagen de perfil

Actualizar Campo SI/NO en una tabla maestra desde otra tabla

Publicado por miki (1 intervención) el 27/05/2022 09:07:45
Hola,

Estoy intentando crear un recordset pero no se muy bien como programarlo en VBA. Tengo dos tablas. La primera tabla es una tabla con importes:

TABLA_IMPORTES

a 100 80 20
b 40 30 10
c 10 10 0

La cuarta columna es la diferencia de la primera y la segunda.

La segunda tabla es una TABLA_MAESTRA_VALIDACION:

t tabla de validación
tabla2 campo si/No si


Lo que quiero es recorrer la primera tabla y que cuando la diferencia entre la segunda y la tercera columna sea 0 en todas las filas me deje el campo SI/NO de la tabla MAESTRA_VALIDACION a TRUE y en caso de que la diferencia en alguna de las filas de la cuarta columna sea <>0 entonces me siga poniendo en la tabla MAESTRA_VALIDACION A FALSE.

He intentado crear el codigo en VBA generando un recordset pero no tengo mucha idea de como programarlo.

Option Compare Database
Option Explicit



Sub conecta_actual()

Dim miconexion As New Connection

Set miconexion = CurrentProject.Connection

Dim instruccion As String
Dim instruccion2 As String
instruccion = "SELECT * FROM TABLA_IMPORTES"
instruccion2 = "SELECT * FROM TABLA_MAESTRA_VALIDACION"
Dim mirecordset As New Recordset
mirecordset.Open instruccion, instruccion2, miconexion

Do Until mirecordset.EOF

If mirecordset.dif = 0 Then

mirecordset.MoveNext ELSE

Update INSTRUCCION2 SET cumple(si/no) = FALSE where indice=12

Loop

mirecordset.Close
Set mirecordset = Nothing
miconexion.Close
Set miconexion = Nothing

End Sub

Si alguien me puede ayudar. Muchas gracias de antemano.
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

Actualizar Campo SI/NO en una tabla maestra desde otra tabla

Publicado por Anonimo (3316 intervenciones) el 27/05/2022 10:22:53
Recorrer una tabla validando la diferencia entre dos de sus campos (diferencia que se supone ya calculada en un tercer campo) no es un problema.
Lo que no veo claro es lo que esta marcado en negrita::
... Lo que quiero es recorrer la primera tabla y que cuando la diferencia entre la segunda y la tercera columna sea 0 en todas las filas ....

¿Qué función tiene el cuarto campo? si es 'la diferencia' entre el segundo y tercero, el recalculo carece de sentido (ya existe) y si no es fiable, su existencia carece de sentido (una consulta simple lo recalcula para toda la tabla en tiempo de ejecución).

Sin complicarse la vida con tablas, recordset y demás (con el tiempo se lograra dominar esa materia) basta una función de dominio para obtener esa validación (siempre y cuando los datos sean reales y fiables)
1
Msgbox DSum("[campo2]", "[tabla_importes]") = DSum("[campo3]", "[tabla_importes]")

Si [Campo4] fuera fiable se podrá calcular así:
1
Msgbox DSum("[campo4]", "[tabla_importes]") = 0

Para soluciones mas ajustadas a la necesidad se requiere información concreta

Por cierto, en lugar de un mensaje se puede utilizar el resultado en una consulta de actualización para guardarlo (actualizar) el dato en la tabla maestra.
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