Access - Como reordenar una tabla creada y machacarla con el nuevo orden

 
Vista:
sin imagen de perfil
Val: 29
Ha disminuido su posición en 10 puestos en Access (en relación al último mes)
Gráfica de Access

Como reordenar una tabla creada y machacarla con el nuevo orden

Publicado por Xavi (17 intervenciones) el 10/07/2020 18:29:48
Buenas tardes,

cuando consulto un actor creo esta tabla con un recordset:


Tabla-autor

en donde el primer campo (orden) marca el orden por el título, alfabéticamente, alternando esas rayas entre película y película.

Lo que pretendo es que quede igual pero ordenándola por año. No puedo hacerlo a través de la consulta porque quedaría así y no alternaría año-titulo con las rayas de separación entre película y película.


Tabla-autor2

El código para crear la tabla no lo quiero tocar, primero porque no sé programar en visual y segundo porque de la tabla creada se puede seleccionar cualquier película y se va a otros formularios. Cuando he intentado tocar algo, se rompe todo.

Así que he pensado que cuando salga del primer for y haya creado la tabla hacer un segundo for que ordene por año-rayas, siguiente año-rayas, etc.

Supongo que la codificación es facilísima pero, com os he dicho, no tengo ni idea de codificar en visual.
Sería posible leer esta tabla, ordenarla por año (intercalando el campo con rayas) y hacer un update para que la lista que la hace visible esté ordenado por año?

Os copio también el resultado de la ordenación por título en el formulario (os pongo un ejemplo donde se insertan blancos en la ordenación porque un director (en este caso) puede haber hecho distintos trabajos en una película):

Tabla-autor-a-llista

Muchísimas gracias!!!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Como reordenar una tabla creada y machacarla con el nuevo orden

Publicado por Anonimo (3319 intervenciones) el 11/07/2020 13:24:30
Si se aplica un orden (no importa si es cuando se crea el recordset o tabla) y después se le aplica otro orden ... el primer orden desaparece.

Cuando se desea aplicar un orden sobre otro orden (y asi con un cierto limite), se hace siempre en la misma secuencia de ordenamiento y (si se necesita o desea) a cada orden se le puede indicar que sea ascendente o descendente (si no se le indica por defecto ascendente o el que pudiera tener ese campo en su origen).

Asume que tienes un conjunto de personas y les aplicas un orden por edad:
Orden By Edad

.- a continuación por altura (la edad ya no importa):
Orden by Altura

.- después por peso (ni importa la edad o la altura).:
Orden By Peso

Para ordenarlas por edad, dentro de la edad por altura y dentro de la edad + altura por peso, se tiene que hacer así:
Orden By Edad, altura, Peso

Y si alguno (altura por ejemplo) deseamos que sea en orden inverso:
Orden By Edad, altura Desc, Peso

Y si no es indispensable (crear orden ayuda a gestionar mejor los conjuntos pero come recursos escasos) no hace falta que se genere un orden si tras el va a 'modularse' ese orden por diversas y volubles características (se puede analizar el rendimiento y optar por la solución optima para cada caso).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 29
Ha disminuido su posición en 10 puestos en Access (en relación al último mes)
Gráfica de Access

Como reordenar una tabla creada y machacarla con el nuevo orden

Publicado por Xavi (17 intervenciones) el 12/07/2020 12:49:49
Buenos días,

te agradezco mucho la respuesta pero no me soluciona demasiadas cosas. O al menos no las he entendido.
No podríais poner algo de código tipo:
select tal_campo from tabla, etc... (o como sea la instrucción para leer, reordenar por AÑO-1, rayas, AÑO2, rayas (etc.) y volver a grabar la tabla)

Muchas gracias, de todas formas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como reordenar una tabla creada y machacarla con el nuevo orden

Publicado por Anonimo (3319 intervenciones) el 12/07/2020 19:28:26
¿De verdad crees que con código las cosas funcionan mejor? .....

No estas en la versión correcta, las cosas funcionan bien, si se utilizan los medios correctos para hacerlas (y si se hacen en el orden adecuado: se optimiza).

Tienes un entorno de trabajo: --> el formulario

Ese objeto esta optimizado y trabaja con 'código a mas bajo nivel' que el código que puedas escribir en la ventana de VBA.

(anoto: cuanto mas bajo sea el nivel del código, es mas eficiente, esta mas 'cerca' de quien tiene que obedecer: --> La CPU.)

El formulario tiene una propiedad (orden) que se le puede asignar (y aquí si podría entrar algo de VBA, pero para programar la acción, no para ejecutarla) y el 'podría' es porque una macro hace lo mismo y la modulas a tu estilo.

Con la excepción de que se necesite un orden para exportar (no para imprimir, que los informes tiene 'su' método de ordenación), no veo la necesidad de reordenar una tabla, creo que en terminaos de eficiencia, es mejor (y directamente) sobrescribirla.

Para entender como aplicar un orden, puedes utilizar el generador de consultas (incorporado en Access = gratuito) y optimizado para esa funcionalidad.

En modo grafico creas la consulta, su orden ... etc y para 'ver que y como lo hace' es tan sencillo como poner la consulta (es una de sus opciones) en su 'vista SQL', a poco interés que pongas ... seguro que aprendes a manejarte en el lenguaje SQL y en poco tiempo no precisas del editor de consultas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 29
Ha disminuido su posición en 10 puestos en Access (en relación al último mes)
Gráfica de Access

Como reordenar una tabla creada y machacarla con el nuevo orden

Publicado por Xavi (17 intervenciones) el 13/07/2020 09:24:58
Está visto que debe ser un secreto poner algo de código.

Bien, he editado la consulta y he puesto interés. No sé encontrar las órdenes precisas. La consulta dice:

SELECT campos from TABLA
ORDER BY tabla.orden.

Si cambio el ORDER BY por tablo.año no funciona: primero pone los blancos, después las rayas y finalmente el año.

Para evitar esto se creó (me crearon) en su día el campo orden. En el ejemplo (imagen 1) va de los números 6621 a 6627. Cuando se creaba la tabla se iba generando a partir de la película y insertando las rayas. Se solucionaba el tema de los blancos replicando n veces el título de la película en el campo DVD2, que no se muestra en el resultado final.

Pongo un ejemplo de la consulta con un director que contiene blancos y rayas. (el resultado final está en la Imagen 3):

Tabla

Partiendo de esta consulta puedo crear un AÑO2 en el que se repita n veces el año y ordenarlo, pero cómo ordeno poniendo correctamente las rayas dónde tocan? Puedo poner condiciones (IF lo que sea) en la clausula ORDER BY?

Gracias de nuevo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como reordenar una tabla creada y machacarla con el nuevo orden

Publicado por Anonimo (3319 intervenciones) el 13/07/2020 18:09:39
El orden es algo mas simple y complejo que cambiar un único campo y esperar que la maquina entienda 'no lo que le decimos' sino lo que (se supone) pensamos.

Creo que ya en mi primera respuesta hacia mención expresa a que un orden puede ser algo mas que ahora por color , ahora por tamaño, ahora por ....

Se puede indicar que primero por color, (y sin perder ese orden) por tamaño y (sin perder el orden obtenido) añadir mas condicionantes

En una CONSULTA es tan sencillo como poner (bajo cada campo que se desee ordenar) si es ascendente o descendente y no perder de vista que Access 'lee las ordenes' como lo haría con otra cosa cualquiera: de izquierda a derecha.

Y (supongo que esto es redundante) el orden en que se ponga a las columnas en la consulta (para obtener la secuencia de ordenación deseada) NO afecta su presentación en los formularios, en los que (sin perder el orden obtenido) los campos se ubican donde decida el programador.

Otra cosa es que si se hace una visión previa (se ejecuta la consulta) se vea 'en modo borrador' si el orden obtenido es el deseado
(orden que ya se vera 'bonito' en en formulario que tenga a esa consulta como origen de datos).

El código tiene un inconveniente ... una cosa es saberlo y otra: saber utilizarlo (incluso sin saber nada de código).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 29
Ha disminuido su posición en 10 puestos en Access (en relación al último mes)
Gráfica de Access

Como reordenar una tabla creada y machacarla con el nuevo orden

Publicado por Xavi (17 intervenciones) el 13/07/2020 18:32:00
Hola de nuevo,

he tirado de intuición y he añadido código a lo que tenía programado en visual. No ha quedado perfecto, pero lo he solucionado. Ha quedado así:

tabla

Lo que he hecho más o menos es:

- aprovecho el loop que se hacía para crear la tabla por orden alfabético
- en un campo oculto guardo el año y le sumo 0,0001 (si se repite el año como el caso del ejemplo (1974) evita que los mezcle)
- cuando detecto una raya vulevo a grabar el año y los sigo incrementando.
- incorporo rayas al principio y al final porque (NO SÉ POR QUÉ) no funcionaba bien.

resultado:

información que se ve ********** información que queda oculta para luego poder ordenar
------------------------------------------- ***** 1970
1970 - guionista - PATTON *********** 1970,0001
------------------------------------------- ***** 1972,0002
1972 - director - EL PADRINO ******* 1972,0003
******* guionista *********************** 1972,0004
------------------------------------------- ***** 1974,0005
1974 - director - El PADRINO II ****** 1974,0006
ETC...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar