Error al ordenar un combo mediante menú contextual

En un formulario único, ordenado inicialmente por su campo clave, si trato de ordenar un cuadro combinado de la A a la Z o de la Z a la A mediante el menú contextual de Access (sin alterar mediante código el funcionamiento del menú) se produce el siguiente error:

Al ordenar un primer cuadro combinado se ordena correctamente.

Pero si trato de ordenar un segundo cuadro combinado, se produce el error 3070: El motor de base de datos de Microsoft Access no reconoce "|" como un nombre de campo o expresión válidos.

Si trato de ordenar un tercer cuadro combinado, el error 3070 se produce dos veces.

Pero, a pesar del error, he comprobado que el formulario se ordena correctamente. Si consulto en la ventana inmediato qué orden se está aplicando me dice, por ejemplo: [Lookup_IDÍndice].[Orden_alfabético], [Lookup_IDZona].[Zona] DESC, que es lo que había indicado en el menú contextual.

Lo que no soy capaz de encontrar es la manera de atrapar ese error 3070 para tratarlo o ver por qué se produce, porque si interrumpo la ejecución del código, las opciones ordenar del menú no aparecen en modo de interrupción.

Así que la pregunta es doble:

¿Por qué se produce ese error 3070 al ordenar por dos cuadros combinados?

O, por lo menos, de qué manera puedo interceptar el error 3070 para tratarlo o eludirlo, ya que el formulario se ordena correctamente a pesar del error.

Por si sirve de ayuda, el menú en que se produce el error es Form View Control.

1 respuesta

Respuesta
1

¿Podrías poner una imagen? Es que no consigo adivinar que quieres. Verás si tengo un formulario con dos combinados, que ninguno tienen origen de la fila

Cuando pongo el cursor en el combinado Ascen.

Me pone como origen de la fila los países de la tabla Clientes ordenados de "menor" a "mayor"

En este caso el código del evento Al recibir el enfoque del combinado es

Private Sub Ascen_GotFocus()
Ascen.RowSource = "select pais from clientes group by pais order by pais"
End Sub

Por el contrario, si pongo el cursor en el combinado Descen

Y el código es

Private Sub Descen_GotFocus()
Descen.RowSource = "select pais from clientes group by pais order by pais Desc"
End Sub

Gracias por tu interés.

Creo que expresé mal mi pregunta al decir que quería ordenar cuadros combinados. Lo que quiero es ordenar registros por el valor de cuadros combinados, utilizando para ello el menú contextual de Access.

El registro 2639 está ordenado, en principio, por su código, de modo que el registro siguiente es el 2640.

En la imagen que te pongo puedo ordenar los registros, por ejemplo, por orden alfabético inverso en el campo Tema usando el menú contextual del cuadro combinado Tema.

Si hago eso, el registro siguiente pasa  a ser el 2660.

Si quiero hacer más complejo el orden y, a continución, en el campo Zona, activo el menú contextual de ese campo y vuelvo a pulsar la opción Ordenzar de la Z a la A es cuando me sale el error. Los registros se ordenan correctamente (el registro siguiente pasa a ser el 15572), pero antes me sale ese error que comentaba en mi pregunta, que no sé ni por qué se produce ni en qué evento interceptar para tratar de averiguar por qué ocurre.

La lista que se abre al pulsar sobre la flecha de cada campo combinado tiene su propio orden y ese no me interesa cambiarlo.

Espero haberme explicado mejor

Chico, lo siento, pero no me aclaro. Pero por si te da una idea. Vamos a suponer que selecciono algo en el combinado Tema. En sus propiedades-eventos-Después de actualizar le pongo

me.recordsource="select * from nombretabla o consulta  order by tema desc"

Es decir, que el origen de registros del formulario sean aquellos registros de la tabla o consulta ordenados por tema descendente.

¡Gracias! Lo que sugieres es una forma de intentar resolverlo.

No podré usar el menú contextual de Access, porque lo que este hace es alterar la propiedad Orderby, y lo hace por su cuenta, sin que yo pueda alterar lo que hace. Pero puedo crear un menú contextual propio, en el que las opciones ordenar A-Z y ordenar Z-A  ejecuten una función que afecte a la propiedad RecordSource.

Gracias de nuevo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas