Seleccionar última fecha en cuadro independiente en access 2002

Tengo varios campos de fechas y necesito que en caso de estar vacíos me seleccione siempre el último, ejemplo:

fechauno 01/01/2000; fechados 02/02/2000; fechatres __/__/____. En un cuadro independiente, necesito que me seleccione siempre la última fecha, en este caso sería 02/02/2000. Si la fechatres y la fechados estuvieran vacías, que seleccionase la fechauno. De una tabla de 20 fechas, escogería siempre la última.

1 respuesta

Respuesta
1

Tienes que construir una función personalizada en un módulo independiente que te calcule el máximo de las fechas que le pases como parámetros.

Pasos a seguir:

1º/ Crea un módulo nuevo (llámalo mdlCódigos, por ejemplo) y pega la siguiente función:

Public Function fncMaxFecha(ParamArray Fechas()) As Date
'---------------------------------------------------------------------------------------
' Procedimiento: fncMaxFecha
' Autor: Sveinbjorn para www.todoexpertos.com
' Fecha: 12/11/2015
' Descripción: Calcula la fecha más alta de las pasadas como parámetros
'---------------------------------------------------------------------------------------
Dim temp As Variant
Dim i As Integer
temp = CDate(Fechas(0))
For i = 1 To UBound(Fechas)
    If Not IsNull(Fechas(i)) Then
        If CDate(Fechas(i)) > temp Then temp = CDate(Fechas(i))
    End If
Next i
fncMaxFecha = temp
End Function

2º/ En tu cuadro de texto independiente, le pones como origen del control algo como esto:

=fncMaxFecha([fechauno];[fechados];[fechatres]...)

Es decir, a la función le pasas todos los nombres de los cuadros de texto que tengas en tu formulario separados por punto y coma.

La función la puedes usar también en una consulta, en código VBA, formularios e informes... como si fuera una de las que trae Access incorporadas.

Buenas.

Funciona perfectamente en una prueba, pero cuando lo aplico en mi base de datos me sale:

" Se ha producido error "94" en tiempo de ejecución:

Uno no válido de null"

Te comento, hay campos que no tienen fecha, son alternos dependiendo si necesita datos, (Fechauno __/__/____, Fechados 02/02/2000, fechatres __/__/____, fechacuatro 04/04/2000, etc. ). Al abrir siempre va a un nuevo registro y también me sale el error. Puede ser por eso????.

Gracias

Se me ha olvidado comentar, que en el módulo creado que tú me has recomendado, me indica depurar la línea

temp = CDate(Fechas(0))

Gracias otra vez

El error es porque el primer campo que le pasas no tiene fecha (es nulo) y es algo que no había contemplado (supuse que siempre habría una fechauno)

Mira así:

Public Function fncMaxFecha(ParamArray Fechas()) As Date
'---------------------------------------------------------------------------------------
' Procedimiento: fncMaxFecha
' Autor: Sveinbjorn para www.todoexpertos.com
' Fecha: 12/11/2015
' Modificado: 13/11/2015
' Descripción: Calcula la fecha más alta de las pasadas como parámetros
'---------------------------------------------------------------------------------------
Dim temp As Variant
Dim i As Integer
For i = 0 To UBound(Fechas)
    If Not IsNull(Fechas(i)) Then
        temp = CDate(Fechas(i))
        Exit For
    End If
Next i
For i = 1 To UBound(Fechas)
    If Not IsNull(Fechas(i)) Then
        If CDate(Fechas(i)) > temp Then temp = CDate(Fechas(i))
    End If
Next i
fncMaxFecha = temp
End Function

Si no te convence que en el registro nuevo te salga 0:00:00, cambia en la primera linea de la función "Date" por "Variant"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas