Usuario
FECHA MAS RECIENTE

Pregunta
-
Buenos días, tengo una base de tados de acces con varios campos de fecha me gustaría hacer un campo calculado que me devolviera la fecha mas reciente de entre los otros campos. este seria un ejemplo de lo que quiero conseguir (en realidad la tabla tiene unos 10 campos de fecha pero el ejemplo es para hacerse una idea)
fecha 1 fecha 2 fecha 3 fecha calculada 01/01/2010 02/01/2010 03/01/2010 03/01/2010 01/01/2013 04/01/2010 03/01/2010 04/01/2010 05/01/2010 01/01/2010 03/01/2010 05/01/2010 gracias de antemano
- Editado podenco33 miércoles, 10 de febrero de 2016 10:24
Todas las respuestas
-
Hola
Se me ocurre que puedes usar la función DMax para calcular la fecha máxima de cada campo, e insertar el valor en una tabla temporal con dos campos, el valor y de que campo procede. A continuación puedes volver a usar DMax para calcular la fecha máxima guardada y recuperar el nombre del campo.
Te lo digo así rápido, sín haber hecho ninguna prueba, pero ahí tienes un punto de partida.
Suerte,
José Mª Fueyo [MS MVP Access]
-
Muchas gracias José, no se si me explique bien, no necesito el valor máximo de cada campo, sino el valor máximo de entre los distintos campos de un registro, por ejemplo supongamos que cada campo es una tarea distinta y lo relleno con la fecha de cuando la realiza, lo que pretendo obtener es un campo que me diga cual es la fecha mas reciente en la que hizo una tarea.
yo he estado haciendo pruebas con dmax y con Iif pero no me han dado resultado, sé que es algo que en Excel seria bastante simple pero no encuentro la forma de hacerlo en acces.
-
Hola de nuevo
Quizás esto te pueda ayudar, entonces. Creas una función a la que le pasas como parámetros los campos de fecha (como tipo fecha). Internamente creas un array, y utilizas alguno de los múltiples métodos que puedes encontrar para ordenar ése array. Luego recuperas el último elemento del array y lo devuelves como resultado de la función.
Esta función la puedes usar en una consulta como un campo calculado.
http://stackoverflow.com/questions/20721489/how-can-i-sort-dates-in-an-array-in-vba
Salu2,
José Mª Fueyo [MS MVP Access]
-
Hola A tod@s,
Mira Podenco33 te pego un procedimiento que hace lo que tu quieres. Yo parto que los datos estan en una tabla llamada 'tabla1' que tiene un primer campo [id] (solo para el msgbox)y el primer campo fecha a evaluar tiene el nombre 'fecha1' (Mirando de izq a dcha), que es el que sirve de referencia en cada registro para la comparacion con el resto de campos de tipo fecha que hay en el registro. Evalua si el dato es fecha sino no lo evalua. Ahora adecualo a lo que necesites.Espero te sirva.
Sub CalculoFechaMasAlta()
Dim cadena As String, RecReg As DAO.Recordset, x As Integer, fechaCalculada As Date
cadena = "Select * From tabla1"
Set RecReg = CurrentDb.OpenRecordset(cadena)
With RecReg
.MoveLast: .MoveFirst
Do While Not .EOF
fechaCalculada = ![fecha1]
For x = 0 To RecReg.Fields.Count - 1
If IsDate(.Fields(x)) Then If fechaCalculada < .Fields(x) Then fechaCalculada = .Fields(x)
Next x
MsgBox "Registro " & ![Id] & " con fecha mas alta " & fechaCalculada
.MoveNext
Loop
End With
RecReg.Close: Set RecReg = Nothing
End Sub