Access - Duda con recorrer registro tabla

 
Vista:
sin imagen de perfil

Duda con recorrer registro tabla

Publicado por Calel (6 intervenciones) el 14/02/2017 20:27:16
Hola,

Realice una funcion en acces para que tome cada registro de la tabla Flujo_Pas y se le reste la fecha ingresada por parametros, pero la funcion me entrega solo un valor.

Y no entiendo el por que de ello.

La tabla tiene 31 registros que complen con la consulta sql, y deceo me entregue las 31 diferencias entre las fechas.

Ejemplo:
1.- 185
2.- 254
3.- 367
.
.
.
31.- 2018

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
FUNCTION Plazo_Acumulado(Operacion AS INTEGER, Fecha_Hoy AS DATE) AS DOUBLE
Dim rs AS Recordset
Dim res AS DOUBLE
 
 SET rs = CurrentDb.OpenRecordset("select Fecha_Fin from Flujo_Pas where Flujo_Id=" & Operacion)
 
    While NOT rs.EOF
        res = DateDiff("d", Fecha_Hoy, Fecha_Fin)
            IF res > 0 THEN
               Plazo_Acumulado = res
            ELSE
               Plazo_Acumulado = 0
            END IF
 
    rs.MoveNext
 
    Wend
 
END FUNCTION
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
sin imagen de perfil
Val: 756
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Duda con recorrer registro tabla

Publicado por Jesús Manuel (375 intervenciones) el 15/02/2017 08:37:53
Creo que el problema es que cuando guardas el valor de res en Plazo_Acumulado sobrescribes el valor anterior, por lo que te quedarás solo con el último valor.

Siguiendo tu ejemplo, en el 1º caso res=185, por lo que al ser mayor que cero lo guardas en Plazo_Acumulado.
En el 2º caso res=254, por lo que al ser mayor que 0 lo guardas en Plazo_Acumulado, que tenía como valor 185, pero que ahora pasa a tener como valor 254.

No se como quieres guardar/mostrar todos los valores, pero si cambiar el código de tu IF por este, tendrías que ver todos los valores:

IF res > 0 THEN
If isnull (Plazo_Acumulado) then
Plazo_Acumulado = res
else
Plazo_Acumulado= Plazo_Acumulado & "-" & res
end if
ELSE
If isnull (Plazo_Acumulado) then
Plazo_Acumulado = 0
else
Plazo_Acumulado= Plazo_Acumulado & "-" & res
end if
END IF
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