Access - Consulta de busqueda de campo en Access

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

Consulta de busqueda de campo en Access

Publicado por antom0311 (6 intervenciones) el 09/06/2020 00:05:08
Saludos compañeros,

Quisiera su ayuda con un obstáculo con el que me he topado.

Tengo una tabla que contiene gastos de empresas. Cada columna tiene un gasto y cada fila es un caso de emprea, por lo que la tabla contiene alrededor de 60 columnas.

Por otro lado tengo un formulario donde el usuario selecciona el gasto sobre el que desea hacer la consulta.

En lo que pido su ayuda, es para hacer una consulta que tome el campo que seleccionó el usuario en el formulario para mostrar las 5 empresas con montos mas altos en esos gastos.

Mi intención es que se ejecute un informe de esa consulta.

Espero haber sido claro y puedan ayudarme.

Muchas 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

Consulta de busqueda de campo en Access

Publicado por Anonimo (3316 intervenciones) el 09/06/2020 00:19:19
Con los datos publicados:

Para obtener los nn de un conjunto de datos, lo indispensable es ordenarlos por ese campo y en la consulta se aplica la clausula TOP nn y solo mostrara esos nn registros.

un supuesto, obtener los cinco valores mas altos de un conjunto de gastos, tabla 'Ventas' campo 'Neto'

1
Select top 5 cliente, neto from ventas order by neto desc
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: 12
Ha disminuido su posición en 74 puestos en Access (en relación al último mes)
Gráfica de Access

Consulta de busqueda de campo en Access

Publicado por antom0311 (6 intervenciones) el 09/06/2020 00:30:14
Gracias! Pero mi obstaculo está en como generar la consulta que automáticamente tome del formulario, la columna del gasto a buscar. Porque normalmente uno selecciona los campos en los que quiere hacer la busqueda, por ejemplo, utilidad neta. Pero dado que no se que campo seleccionará el usuario, la consulta debe tener una manera de ligar el campo definido en el formulario a la consulta para que se muestren los datos ordenados, sólo de esa columna seleccionada.
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

Consulta de busqueda de campo en Access

Publicado por Anonimo (3316 intervenciones) el 09/06/2020 09:07:28
Cuando el ordenador (la maquina) piense en lugar del usuario y/o el programador .... aparecerá: TERMINATOR

Ahora en serio.... ¿Qué es lo que se pretende de verdad?.....

Si es automatizar en base a tomar como referente al ultimo objeto que fue el 'objeto activo' antes de pulsar un botón (algo que se podría hacer con un doble click en el objeto como alternativa), la solución puede ir en la línea de utilizar el objeto SCREEN y tomar como referencia su propiedad 'valor anterior'.
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: 12
Ha disminuido su posición en 74 puestos en Access (en relación al último mes)
Gráfica de Access

Consulta de busqueda de campo en Access

Publicado por antom0311 (6 intervenciones) el 09/06/2020 18:52:59
Jaja a lo mejor necesito a terminator en esto...

Creo que no me he dado a entender. Lo que quiero es una consulta que encuentre la columna a la que hace referencia el usuario y obtenga los 5 datos mas altos de esa columna.

Suponiendo que la tabla tiene la columnas de "Ventas", "Gastos" y "Utilidad" (En realidad son 60 columnas). Cada fila es el caso de una empresa con sus respectivos gastos. El usuario selecciona en el formulario que desea ver los datos de "Utilidad". Asi que el informe arroja las 5 empresas con mayor utilidad.

He intentado con DLookup pero sólo me da el primer resultado que encuentra.
He intentado con la función Silnm, SWITCH y ELEGIR, pero como son 60 columnas, no me permite ingresar tantos caracteres en la elaboración de la función.

Pienso que debe haber una forma de hacer lo siguiente:

1
2
3
SELECT TOP 5 Formularios!(Campo que el usuario seleccionó en el formulario)
FROM TablaGastosdeEmpresas
ORDER BY Formularios!(Campo que el usuario seleccionó en el formulario) DESC;

Desconozco si se pueda de esa forma o exista alguna otra función.

Gracias!
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
Imágen de perfil de jorge
Val: 1.039
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Consulta de busqueda de campo en Access

Publicado por jorge (304 intervenciones) el 09/06/2020 21:03:12
buen dia aver si te entiendo sumpongamos que tengo un tabla con 60 columnas y esa tabla la pongo en un subformulario y despues doy click en una fila y de hay tengo que arrojar las 5 utilidades mas grande apartir de la que tome??
saludos,
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: 12
Ha disminuido su posición en 74 puestos en Access (en relación al último mes)
Gráfica de Access

Consulta de busqueda de campo en Access

Publicado por antom0311 (6 intervenciones) el 10/06/2020 00:38:43
Adjunto unas imagenes para mostrar como está la tabla y el formulario.

En el formulario el usuario elige de un cuadro combinado el campo que quiere visualizar y lo que busco es que al dar clic en el botón del formulario, arroje un informe con el top 5 de los datos de esa columna.
Por lo que busco es una forma de hacer una consulta que tome al valor almacenado en el cuadro combinado y busque la columna en la tabla con ese nombre y de el top 5.

Muchas gracias

Captura-de-pantalla-2020-06-09-14.25.55
Captura-de-pantalla-2020-06-09-17.34.16
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

Consulta de busqueda de campo en Access

Publicado por Anonimo (3316 intervenciones) el 11/06/2020 12:17:23
Pienso que debe haber una forma de hacer lo siguiente:

1
2
3
SELECT TOP 5 Formularios!(Campo que el usuario seleccionó en el formulario)
FROM TablaGastosdeEmpresas
ORDER BY Formularios!(Campo que el usuario seleccionó en el formulario) DESC;
Desconozco si se pueda de esa forma o exista alguna otra función.

…………………

Las consultas se pueden crear con el generador grafico o ....
.- copiarlas y trastearlas después (por descontado que quien domine el lenguaje puede ignorar al generador grafico).

Basándome en que se dispone de un combo para seleccionar la columna, el botón me parece superfluo, su función la puede hacer el propio combo (o la columna y sin combo) en su evento CLICK (pero no es mi aplicación y el que decide es el que programa).

Con la consulta como referencia y (suponiendo) que el combo devuelva el dato adecuado el código podría ser algo así:

.- en una única línea

1
SELECT TOP 5 Formularios!(Campo que el usuario seleccionó en el formulario) FROM TablaGastosdeEmpresas ORDER BY Formularios!(Campo que el usuario seleccionó en el formulario) DESC;

.- Utilizando variables ( utilizo 'Me.' porque asumo que el código se utiliza en el propio formulario):

1
"SELECT TOP 5 " & Me.[el combo] & " FROM TablaGastosdeEmpresas ORDER BY " & Me.[el combo] & " DESC"

Aplicándolo en el evento que se considere adecuado :

1
DoCmd.RunSQL "SELECT TOP 5 " & Me.[el combo] & " FROM TablaGastosdeEmpresas ORDER BY " & Me.[el combo] & " DESC"

Lo que ocurre es que esa consulta devolverá un solo campo con cinco registros en un determinado orden ¿es lo que se necesita?.

Hay otra opción, en lugar de una consulta, aplicar un orden al formulario en ese campo, saldrían todos y en el orden, pero …..
¿Qué impide redimensionar el formulario en tiempo de ejecución y mostrar únicamente cinco registros?

(si el filtro esta activo solo presenta cinco, si esta inactivo presenta todos)

Otra opción a evaluar:
En la cabecera de la columna (en la etiqueta) un click y ordena por ese campo ….. así no se pierde la visión de conjunto.
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: 12
Ha disminuido su posición en 74 puestos en Access (en relación al último mes)
Gráfica de Access

Consulta de busqueda de campo en Access

Publicado por antom0311 (6 intervenciones) el 11/06/2020 18:12:14
Muchas gracias! Lo que busco es poner esa información de TOP 5 en un informe que ya está configurado y se abre al momento de dar clic en el botón.

¿Debería ponerla instrucción DoCmd.RunSQL...... en el cuadro de texto del informe donde quiero que aparezca la información?

Perdón apenas me estoy familiarizando con codigo VBA, por lo que sé muy poco

Saludos
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

Consulta de busqueda de campo en Access

Publicado por Anonimo (3316 intervenciones) el 11/06/2020 21:34:51
Creo que no hablamos de lo mismo ….

Si ya tienes el informe y lo único que pretendes es limitar el numero de registros que se le envían, en la consulta origen de datos ===> propiedades en la ventana que aparece basta que en 'valores superiores' se le ponga (mas bien 'imponga') el numero máximo de registros a devolver.

Otra opción (para mostrar un numero finito de elementos) puede ir en la línea de modificar la altura de la sección que lo contiene.

Tengo la impresión de el enfoque que aplicas necesita madurar un poco, si ya existe un informe creado, en su origen de datos (se supone que la/una consulta) bastaría aplicar el orden (y el limite si se quiere) pero sospecho que no funcionara de forma correcta, pues Access no suele respetar para sus informes los ordenes que le vengan de su origen de datos pues tiene herramientas propias mas poderosas.

Personalmente iría en la línea de limitar la altura del detalle (o la sección donde se muestre el conjunto de datos) y enviarle en la llamada como argumento el nombre del campo por el que se desea ordenar (y al abrir el informe se le indica que campo es el impone el orden).

Ojea algo sobre la propiedad OpenArgs, puede ser muy útil.
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: 12
Ha disminuido su posición en 74 puestos en Access (en relación al último mes)
Gráfica de Access

Consulta de busqueda de campo en Access

Publicado por antom0311 (6 intervenciones) el 16/06/2020 20:30:42
Esta solución se acerca mucho a lo que busco. Lo explico más a detalle:

Ya tengo el informe configurado para mostrar ciertos datos y lo que necesito es que un cuadro de texto en el informe, se muestre esta información de Top 5.

Efectivamente, necesito agregar también otro campo que sería el de [actividad economica] que se toma de la misma tabla. Por lo que en el informe quiero que quede algo así:

[Actividad economica] --------[Campo que el usuario seleccionó en el formulario]
Actividad A ------------------------ $1,000,000
Actividad B ------------------------ $ 900,000
Actividad C ------------------------ $ 800,000
Actividad D ------------------------ $ 700,000
Actividad D ------------------------ $ 600,000

Mi duda sería ¿Cómo inserto el código en el cuadro de texto del informe para que muestre esta búsqueda de Top 5?

Traté de ingresar este:
DoCmd.RunSQL "SELECT TOP 5 " & Me.[el combo] & " FROM TablaGastosdeEmpresas ORDER BY " & Me.[el combo] & " DESC"
Pero me sale vacío.
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

Consulta de busqueda de campo en Access

Publicado por Anonimo (3316 intervenciones) el 17/06/2020 21:41:44
Parece que mi anterior respuesta no llego a publicarse.

No funciona (ni funcionara), porque un cuadro de texto solo admite un dato y esa consulta (independiente de cuantos datos devuelva) solo por casualidad devolvería uno, esa posibilidad no se trata como una excepción (ni se desea darle ese trato).

Para presentar esos datos se necesita un objeto que permita ese tipo de contenido, los clásicos:

.- un formulario (en su vista continua) o un informe (como sub-informe si fuera el caso)
.- un cuadro de lista en un formulario (no se como se visualizaría en un informe)
.- un cuadro combinado en un formulario (en un informe solo presentaría un único dato)

Hay alternativas pero requieren código y datos fieles.
.- consiste en crear un texto en el que (con saltos de línea) se generan renglones

Y así si se mostraría en un formulario u informe como tal cuadro de texto (si se le deja expandir automáticamente en el informe)
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