La segunda parte de mi pregunta sería optimizar el tiempo de ejecución ya que este código va dentro del Timer del form y se repite cada 5'. En la instrucción DoCmd.RunSQL iría la sentencia sql que os he preguntado en mi pregunta inicial que esta en el texto de arriba.
'Nos aseguramos que al abrir el form se ejecute el programa y nos actualice las pz leidas por producción
If n = 0 Then
bfound = True
End If
If Not IsNull(fecha_Corte = DLookup("[fecha_CorteFab]", "[Box_Plan_3/3]")) Then
fecha_Corte = DLookup("[fecha_CorteFab]", "[Box_Plan_3/3]")
End If
'*Cálculos horas minutos: hh,nn * 100 = "X" + 10000= Right("X", 4) para mas inf revisar procedimiento "Pz_Fabricadas"
q = "slelect F08ART, Sum(F08QTB) AS SumaQTY FROM BUSRCDFN_FIJ08_Historico_Reportes_planta " _
& " where (((F08DEP) = 220) And (([F08FEC] & Right((([F08HIN] * 100) + 10000), 4)) > '" & Val(fecha_Corte) & "')) GROUP BY F08ART ORDER BY F08ART;"
'creamos un contador que nos genera espacio de tiempo mas amplio que el que nos da el Timer del Form y así no colapsar el programa con la ejecución de bucles y consultas
If n > 1000 Or bfound = True Then
rs.Open q, cnn, adOpenStatic, adLockOptimistic
Do Until rs.EOF
' Declaramos variables
Ref = rs("F08ART")
acum = rs("SumaQTY")
'Consulta de actualización para agregar en cada ref las pz fabrricadas
DoCmd.RunSQL ("UPDATE Modulo_Plan SET Pz_Fabricadas = '" & acum & "' WHERE ([Ref]='" & Ref & "');")
rs.MoveNext
Loop
bfound = False
n = 1
rs.Close
Set rs = Nothing
End If