Cómo encontrar el valor máximo y mínimo de un campo dentro de una tabla

Tengo dos subformularios que, por comodidad, llamaré sub1 y sub2. El subformulario "Sub2" se encuentra dentro de "Sub1". Ambos vinculados con una relación de uno a varios por medio del campo "Id".

Pues bien, tengo en "Sub2" una tabla llamada "Registro_conductas_interacción" con un campo llamado "hora". El caso es que quiero saber qué hora ha sido la inferior y la superior dentro de la tabla, con la siguiente condición: que el campo "Id" de la expresión tenga el mismo valor que el campo "Id" que está en el subformulario Sub1.

He puesto el siguiente código para la hora mínima, pero me dice que no coinciden los tipos. ¿Dónde está el problema?:

    mínimo = Format(DMin("[Hora]", "Registro_conductas_interacción", "[Id] = Me.parent.[Id]"), "hh:mm")

2 Respuestas

Respuesta
2

Pedro: Prueba declarando la Variable Minimo antes.

Dim Minimo As Date

Mínimo = DMin("[Hora]", "Registro_conductas_interacción", "[Id] = Me.parent.[Id]")

Mis saludos >> Jacinto

Hola Jacinto. Realmente el código es mucho más de lo que he puesto. La idea que estoy llevando a cabo es tomar registros de conducta por medio de access de forma que se registre automáticamente la hora del comienzo del registro y la finalización del registro. Luego  necesito calcular la diferencia entre la hora mayor y la menor a fin de saber la duración de la observación en horas, minutos y segundos. El resultado se graba en el campo "duración" del sub1. Para ello he creado este código pero no me funciona bien. 

Private Sub txt_alumno_Change()

Me.txt_hora = Time()
Dim mínimo As Date
Dim máximo As Date
mínimo = Format(DMin("[Hora]", "Registro_conductas_interacción", "[Id] = Me.txt_id"), "hh:mm:ss")
máximo = Format(DMax("[Hora]", "Registro_conductas_interacción", "[Id] = Me.txt_id"), "hh:mm:ss") Me.Parent.txt_duración = máximo - mínimo

End Sub

En Sub2, el campo "Id" tiene el mismo valor que el campo Id de Sub1. El id de Sub1 es de tipo autonúmerico y clave y Sub2 entero largo. Ambos  están relacionados con una relación de uno a varios.

Pedro: He visto la contestación de Sveinbjorn, y naturalmente, y como siempre tiene razón.

Prueba con su corrección y si continúa el error, nos comentas. Mis saludos >> Jacinto

Respuesta
2

Aparte de lo que te comenta Jacinto (siempre es mejor declarar las variables que no hacerlo), tienes un error de sintaxis, el Me... va fuera de las comillas:

mínimo = Format(DMin("[Hora]", "[Registro_conductas_interacción]", "[Id] = " & Me.Parent.[Id]), "hh:mm")

A ver si así te sale.

Un saludo


Parece que funciona, pero no consigo que me reste las horas de forma adecuada. El código que tengo es el siguiente:

Me.txt_hora = Time()
Dim mínimo As Date
Dim máximo As Date
mínimo = Format(DMin("[Hora]", "[Registro_conductas_interacción]", "[Id] = " & Me.Parent.[Id]), "hh:mm")
máximo = Format(DMax("[Hora]", "[Registro_conductas_interacción]", "[Id] = " & Me.Parent.[Id]), "hh:mm")
Me.Parent.txt_duración = máximo - mínimo

Por ejemplo, cuando la hora mínima es 15:57 y la máxima 16:03 el resultado de la resta es 12:00 a.m.

Para hacer cálculos con fechas/horas hay funciones específicas para ello, por ejemplo DateDiff(), que devuelve la diferencia entre dos valores de fecha/hora en la magnitud que se le indique (días, meses, horas...), DateAdd(), para añadir a una fecha hora una cantidad en una magnitud determinada...

Otra forma de trabajar con fechas es convirtiéndolas a número (que en realidad es lo que son), teniendo en cuenta que la parte entera corresponde a la fecha, y la decimal a las horas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas