Ordenar registros por fecha access

Tengo un formularios con datos personales y dentro de él un subformulario donde recojo las actividades de la persona por fecha. Casa fecha es un registro. Ambos están asociados por DNI

Pues bien... Este es el código que uso en el subformulario

Private Sub Form_Load()
Me.OrderBy = "[inicio] DESC"
Me.OrderByOn = True
End Sub

NO sé porque hay registros que me ordena y otros no. Es decir, si abro la ficha de Pepita Jimenez ene l formulario y pincho el subformulario de actividades me aparece primero el último por fecha . Pero si abro otra ficha Juan Paquito al abrir el subformulio de de actividades este no lo ordena.

¡Grandes misterios de Access!.

2 respuestas

Respuesta
1

Pregunto ¿hay alguna razón en especial para ponerlo en el evento Al cargar del subformulario? Lo digo porque si tengo la tabla Actividades

Y si abro el formulario Clientes con el subformulario Actividades sin decirle nada me sale

Pero si en el evento Al activar registro del formulario Clientes le pongo

Private Sub Form_Current()
Me.Actividad.Form.OrderBy = "Inicio desc"
Me.Actividad.Form.OrderByOn = True
End Sub

Me sale

Ordenados por inicio y descendente

Me olvidé de decirte, que al ponerlo en el evento Al cargar del subformulario, la primera vez que se abre(carga), si te los ordena, pero cuando te desplazas a otro registro del formulario Clientes, como el subformulario no se vuelve a "cargar", sino que simplemente sigue abierto, ya no te ejecuta la instrucción, por tanto no los ordena.

¡Gracias!  Genia....voy a probarlo como ru dices. 

Hola Julián:
Estoy probando y me sale un mesaje de error de compilación "no se encontró método o el dato mimebro".

Cuando escribes Me. Actividades ¿es el nombre de la tabla o del formulario?

y por último... ¿si tengo varios subformularios asociados al mismo formulario y quiero que me los ordene también como tendría que escribirlos?, ¿Sería así?

Private Sub Form_Current()
Me.Actividad.Form.OrderBy = "Inicio desc"
Me.Actividad.Form.OrderByOn = True
Me.compras.Form.OrderBy = "fecha desc"
Me.compras.Form.OrderByOn = True
End Sub

Mil gracias como siempre

Hola otra vez.... ¡¡lo he conseguido!!! estaba escribiendo mal.

Un abrazo y gracias

Cuando veas una instrucción que ponga algo como

... Clientes.form... siempre se refiere al nombre de un subformulario

¡Gracias! 

Loles, lo siento, pero no había leído enteras las preguntas.

Si tienes varios subformularios basta con dejar la instrucción como

Private Sub Form_Current()
For Each Control In Form.Controls
If Control.ControlType = acSubform Then
Control.Form.OrderBy = "[Inicio] DESC"
Control.Form.OrderByOn = True
End If
Next
End Sub

 Pero claro, eso obliga a que todos los subformularios tengan el campo Inicio

Respuesta
1

Solo tengo una sugerencia.

Valida que tu campo INICIO sea de tipo fecha y no tipo texto, porque la ordenación es distinta

Si es Fecha la evalúa como un conjunto, si es texto ordena de forma posicional comparando los caracteres uno a uno y eso tiene comportamientos que lucen anormales

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas