Access - ordenar informe por campo calculado

 
Vista:
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

ordenar informe por campo calculado

Publicado por Pablo (328 intervenciones) el 27/09/2022 19:38:40
Hola a todos
Pues eso, cómo se ordena un informe por un campo calculado.
El formulario que abre el informe tiene 3 opciones de orden, en el evento al abrir del informe tengo
select case Forms!listado_muestras!opcion_orden
case 1
me.orderby ="campo1"
case 2
me.orderby="campo2"
case 2
me.orderby campo calculado=100*campo1/campo2
end select
me.orderbyon=true
campo1 y 2 funcionan correctamente, el calculado cómo se hace?
Gracias
Pablo
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

ordenar informe por campo calculado

Publicado por Anonimo (3316 intervenciones) el 27/09/2022 21:15:09
Pasándolo a un valor estable, añádelo al origen de datos (si es una tabla, utiliza una consulta y en ella añade el cálculo como 'campo3').

Aunque en el informe figure el campo calculado, este se crea en tiempo de ejecución, por loque 'técnicamente' no existe a la hora de aplicar un orden.

¿Porque no utilizar la variable OpenArgs y en ella le pasas el orden?, se evitan dependencias tales como un cambio de nombres y adiós a la automatización.
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: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

ordenar informe por campo calculado

Publicado por Pablo (328 intervenciones) el 28/09/2022 18:04:29
Hola!
En informes estoy más verde que en el resto. ¿Cómo paso el filtro con open args?, así a bote pronto no se me ocurre nada,
El informe está basado de la unión de dos select con un campo calculado cada una

Gracias por la ayuda
Pablo
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

ordenar informe por campo calculado

Publicado por Anonimo (3316 intervenciones) el 28/09/2022 19:13:05
Si (como supongo) el informe se abre con 'DoCmd', en esa llamada se le pueden añadir condiciones (filtros, vista previa ... y OpenArgs) que es la última (por lo que hay que respetar las comas si no se utilizan las anteriores opciones), esto es: 'ubicarla en la posición que le toca'.

Es una 'variable' de tipo alfanumérico y puede ir casi cualquier cosa (que habrá que interpretar después), supongamos que es el nombre del campo para ordenar (en este caso 'Campo2') pero también vale la referencia: Me.Opcion_orden.

En el informe (en el mismo evento Open) se verifica que hay algo en OpenArgs:

1
IF Nz (Me.OpenArgs,"") <> "" Then Me.Orderby = OpenArgs : Me.OrderbyOn = True

Si se le envía un dato lo aplica si no se le envía no ordenara nada (porque los informes tienen sus propios métodos y no aceptan injerencias)

Que los datos procedan de una consulta u otro conjunto de datos no le afecta, el informe lo que desea son 'datos' y él se encarga de aplicarlos donde corresponda según el diseño y la programación.
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: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

ordenar informe por campo calculado

Publicado por Pablo (328 intervenciones) el 28/09/2022 20:23:53
En el formulario desde el que lanzo el informe tengo un cuadro de opciones, con las tres posibles de orden, al que llamo opcion_orden que puede tener los valores 1,2 o 3. En vez de saber cuál es la opción usando openargs, en su evento al abrir tengo un select case Forms!listado_muestras!opcion_orden. La tercera opción es la del campo calculado, las otras dos funcionan bien, la tercera es la que no se hacer.el campo calculado es 100*campo1/campo2,
case 3
me.orderby 100*campo1/campo2
me.orderbyon=true

Se me acaba de ocurrir, a lo mejor si pongo me.orderby=campo1*100/campo2 si funciona, lo digo por aquello de que no empiece por un número

Hoy no puedo hacer pruebas, mañana o pasado lo pruebo y comento
Gracias
Pablo
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

ordenar informe por campo calculado

Publicado por Anonimo (3316 intervenciones) el 28/09/2022 21:46:38
Personalmente evita el utilizar el Select Case para obtener un dato (texto) que se le puede enviar de forma directa y si se sigue utilizando el numero: para 'convertir' el numero a texto, un IIF y resuelto:

1
IIF(Me.opcion_orden =1,"Fecha_Entrega", IIF(Me.opcion_orden =2, "Precio_maximo", "Producto"))

Si los nombres son Campo1, Campo2, Campo3, la opción es más sencilla:

1
"Campo" & Me.opcion_orden

Si funciona correctamente cualquier alternativa es válida.
(Cuanto más corto y recto es el camino más fácilmente se camina y menos energía se gasta).
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: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

ordenar informe por campo calculado

Publicado por Pablo (328 intervenciones) el 29/09/2022 09:39:43
Los nombres no son campo1,campo2.., no puedo concatenar un nímero a campo, tendría que pasarlo a cadena, sacarle el signo...
Mejor 2 iffs anidados que un select case
Sigo con la duda de como ordeno un informe por un campo calculado
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

ordenar informe por campo calculado

Publicado por Anonimo (3316 intervenciones) el 29/09/2022 11:10:21
Quítale la 'titulitis' al campo y aplica la solución adecuada.

Que su origen sea un cálculo (y se le 'titule' como calculado) no tiene nada que ver:

.- O existe (se generó en la consulta que da lugar al origen de datos)
.- O no existe porque se calcula en tiempo de ejecución (una suma-continua o un producto para totalizar por línea/grupo).

Si 'existe' como tal campo, se ordena igual que se ordena si el campo pertenece a una tabla (con su nombre de pila o alias en ese conjunto) si no existe .... no se puede ordenar el infinito o el vacío absoluto.
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: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

ordenar informe por campo calculado

Publicado por Pablo (328 intervenciones) el 29/09/2022 19:04:40
Como ya tenia el select case sigo haciendo pruebas con el, cuando funcione lo cambiare a un IIF
Tengo un Texto38 que en su ficha Datos.Origen del control=100*[PVP]/[Uddes]
Case 3
me.orderby "Texto38" ->me pide que introduzca un valor de parámetro
si pongo
me.orderby 100*PVP/Uddes-> dice que Ha especificado una expresión que no tiene valor
No se que hacer
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: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

ordenar informe por campo calculado

Publicado por Pablo (328 intervenciones) el 29/09/2022 19:22:58
Sigo
Antes había probado poniendo comillas y creo que también me decía lo de introducir un valor de parámetro
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

ordenar informe por campo calculado

Publicado por Anonimo (3316 intervenciones) el 29/09/2022 20:30:53
El dato ha de pertenecer al origen de datos, un campo calculado (más bien un cuadro de texto con un cálculo) no existe más que para ese puntual resultado y con el único que puede compararse es consigo mismo (compararse con sus 'teóricos' hermanos para poder ordenarse).

Si al origen de datos (consulta si es una tabla) se le añade un dato más (el campo calculado) existirá físicamente (no solo virtualmente como cuando es un cálculo) y se podrá ordenar por él.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

ordenar informe por campo calculado

Publicado por Pablo (328 intervenciones) el 03/10/2022 17:37:47
Pues efectivamente era eso, añadí a la sql de la consulta origen el dato calculado con otras dos columnas y pude ordenar por esta última columna.
Solucionado!
Gracias
Pablo
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