Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Debates (https://www.clubdelphi.com/foros/forumdisplay.php?f=29)
-   -   ¿Cómo harías una pantalla de consulta? (https://www.clubdelphi.com/foros/showthread.php?t=78227)

newtron 30-03-2012 22:59:02

¿Cómo harías una pantalla de consulta?
 
.... en episodios anteriores.... :D este hilo viene a cuento de este otro que ya se estaba desviando un poco de su propuesta inicial.

Hola a todos.

Os propongo un pequeño juego. Me gustaría ver cómo resolvéis el eterno problema de las consultas de las tablas, si es posible con capturas de pantalla. Creo que nos vendrá bien a todos ver las soluciones que se aporten para mejorar nuestras aplicaciones.

¿Os parece?

Saludos

roman 30-03-2012 23:09:50

Quizá es que ya tengo mucha hambre pero, ¿que no es muy ambigua esta pregunta? ¿O a qué te refieres?

// Saludos

Casimiro Notevi 30-03-2012 23:11:00

¿Puedes especificar más lo de "consultas de las tablas"? :)

mamcx 30-03-2012 23:29:02

Una excelente manera de resolver ese tipo de preguntas es hacer "mokups" o dibujos aproximados.

He usado esta herramienta:

http://www.balsamiq.com/products/mockups

Precisamente porque no son realistas, sino como si fueran hechos a mano. Tambien me compre un tablero de eso blancos (pequeño, un poco mayor que un iPad) para poder rayar rapido y ver que ideas salen.

Otras herramientas:

http://stackoverflow.com/questions/1...face-prototype

Pero concuerdo que hay que aterrizar la pregunta...

Chris 30-03-2012 23:35:07

Cuando se aclare la pregunta, estoy atento a participar :P

Al González 31-03-2012 02:55:03

También yo.

Intuyo a qué se refiere newtron, pero mejor que se explique el andaluz. :)

newtron 31-03-2012 10:37:20

Ok. Disculpad, pensaba que se sobreentendía el tema.

La historia está en que imagino que todos los que desarrollamos aplicaciones tenemos un formulario común para consultar artículos, clientes, proveedores, etc. Lógicamente cada uno habrá resuelto esa papeleta de alguna forma en particular, con más o menos botones, preguntando unas cosas u otras o con más o menos atractivo visual.

Al hilo de lo que debatíamos en el anterior hilo se me ocurre que sería interesante ver de qué manera habéis resuelto el asunto cada uno de vosotros, o sea, poner un ejemplo de como hacéis una consulta de cualquier tabla, si podéis buscar por uno o más campos, si podéis hacer filtros, etc.

¿"Mesentiende" ya? :D

Por cierto, si que soy andaluz, ¿se me nota en el acento? :D

newtron 02-04-2012 10:25:24

ummmmmmmmmm.... ¿sois tímidos o no mola mi propuesta? :D

Casimiro Notevi 02-04-2012 11:58:41

Si te refieres a consulta, edición, etc. o sea, una típica "ficha" de clientes, por ejemplo, entonces: lo primero el código, si teclea uno y existe... se presentan sus datos para ser consultado/modificado directamente. Si no existe, pues se da de alta.
Con "pestañas" para cada apartado: datos generales, comerciales, financieros, contactos, sucursales, documentos, etc.
Procurando que sea fácil y rápido moverse entre los campos con las teclas, que no sea obligatorio el uso del ratón.

newtron 02-04-2012 12:24:15

Cita:

Empezado por Casimiro Notevi (Mensaje 429136)
Si te refieres a consulta, edición, etc. o sea, una típica "ficha" de clientes, por ejemplo, entonces: lo primero el código, si teclea uno y existe... se presentan sus datos para ser consultado/modificado directamente. Si no existe, pues se da de alta.
Con "pestañas" para cada apartado: datos generales, comerciales, financieros, contactos, sucursales, documentos, etc.
Procurando que sea fácil y rápido moverse entre los campos con las teclas, que no sea obligatorio el uso del ratón.

Si, pero yo me refiero exclusivamente a la parte de consulta de la tabla, o sea, el formulario con el grid o lo que sea para buscar un cliente o un artículo. Lo digo porque es un tema que se puede solucionar u orientar de varias formas y me gustaría ver como lo habéis hecho vosotros.

ecfisa 02-04-2012 12:28:13

Hola amigo newtron.

En esos casos suelo usar un formulario de consulta/selección con un cuadro de texto (criterio) un combo de campos sobre el que se hará la búsqueda (Ej: nombre, dirección, teléfono, etc, etc). Un TRadioGroup con las opciones (Ver todo, Comienza, Contiene, Coincide, Termina) el cuál llama a una funcion a la que le envío el nombre de tabla, campo, criterio y el índice del RadioGroup, esta devuelve la consulta SQL armada. Muestro el resultado en un TDBGrid a fin de que seleccione y por último las acciónes que puede efectuar con el registro seleccionado.

Saludos.:)

newtron 02-04-2012 12:41:09

Gracias amigo ecfisa, eso es lo que quería saber, aunque hubiera molado alguna imagen. :p

Y como para muestra un botón os cuento cómo lo hago yo. Todo esto viene a cuenta del hilo anterior en que comentaba que yo busco la simplicidad absoluta. Cuando llamo a alguna consulta abro un grid con la tabla cargada, esto lo puedo hacer sin ralentizar mucho el proceso por el tipo de base de datos que uso, que puedo abrir las tablas con un clásico ttable en vez de hacer un SELECT *. Saldría algo parecido a esto:



Se puede configurar dónde quieres que active el foco del grid cuando abra la consulta, por defecto normalmente lo hace en el nombre. A partir de ese momento se puede empezar a escribir para buscar la cadena deseada y si el campo está indexado de forma automática se va buscando letra a letra posicionandose en la cadena que se va tecleando, de esta forma:



Bien, esta es una búsqueda simple, de izquierda a derecha. Si queremos hacer un filtro para buscar la cadena en cualquier parte del texto pulsamos Ctrl-Enter y quedaría esto:



Aquí estaríamos filtrando lo que tenga la cadena "80" en cualquier parte de la descripción. Estos filtros se pueden hacer navegando por cualquier campo de la tabla incluyendo la posibilidad de usar operadores > o < en números y fechas. Por ejemplo, si quisieramos buscar los artículos que tuvieran en cualquier parte de la descripción la cadena "80" y tuvieran un PVP0 de más de 1 euro nos iríamos al precio y teclearíamos directamente ">1" y Ctrl-Enter, quedando el grid de esta manera:



También se pueden añadir o quitar campos del grid para que solamente aparezcan los que deseemos o moverlos de sitio dentro del grid, para esto se pica en el botón de las herramientas de la parte superior derecha.



Y ya para rizar un poco el rizo, el resultado de la consulta con sus filtros y campos se puede enviar como informe para imprimirlo, exportarlo, etc. picando en el botón de la impresora.



Básicamente esto era lo que quería transmitir en mi anterior post, simplicidad al máximo y la máxima agilidad de uso. Por otro lado quería ver cómo lo solucionáis vosotros para ver si en algo puedo mejorar lo que ya tengo.

Saludos

Edito: Se me olvidaba, también hay un check que si se marca, cuando se sale de la consulta y vuelve al mantenimiento de donde venga, artículos, clientes, ventas, etc. solamente navega por los registros filtrados. Esto es útil para revisar los albaranes o facturas de un cliente determinado, los artículos de una familia, etc.

Casimiro Notevi 02-04-2012 13:21:46

Pues básicamente algo parecido, los filtros con posibilidad de buscar "los que contienen...", "los que empiezan...", etc. y el grid debajo como has puesto tú, ordenable por las diferentes columnas también.
Además acostumbro a añadir un botón de "Nuevo" por si no existe lo que se busca y se quiere dar de alta, este botón enlaza con la ventana/ficha de la tabla que se esté consultando.
También la opción de imprimir.
Además un "retardo" entre pulsaciones de teclas al buscar, para que vaya realizando el select automáticamente con lo tecleado, si antes no ha pulsado "intro".
Aunque suele haber bastante diferencia entre unos programas y otros, básicamente es eso.

newtron 02-04-2012 17:56:13

ummmmmmmmmmmmm.... os veo perros... quiero imágenes ... imáaaaaaaaaaagenesssssssss. :D

Chris 02-04-2012 18:29:53

Ya en un hilo algo viejo muchos habíamos compartido capturas de nuestras pantallas. Pero tu hilo es creo un poco más especifico.

En ése hilo compartí estas misma imágenes.

Esta ventana es la principal para un tipo de registro. En este caso, pacientes. En la parte superior tiene los clásicos botones de CRUD -Crear, Actualizar y Eliminar-. Debajo de ellos y al lado derecho está un campo de búsqueda que le permite al usuario buscar por nombres o correo electrónico del páciente. También permite buscar por el código interno y aplicar filtros sobre los código como este: >15, 50-100 y similares. No ofrece mayor funcionalidad. Solo la básica. El resto de la ventana es la rejilla principal.

Cuando diseñé esta ventana uno de mis objetivos era que fuera simple y que la GUI no consumiera mucho espacio. En esta pantalla, la GUI solo ocupa alrededor del 15% del espacio visual. Una nueva versión de esta ventana en la que estoy trabajando, la GUI solamente ocupa el 7% del espacio visual. El resto es dedicado a los datos, que es lo que más le importa al usuario.

Si haces una búsqueda en la anterior ventana y la búsqueda no devuelve ningún resultado, la apariencia cambia a esta:


Puedes apreciar que: 1) No utilizo MessageBox para notificar al usuario de un resultado vacío. 2) La interfaz utiliza pestañas para dividir visualmente la lista de los registros existentes y resultados de búsqueda. Sin embargo creo que las pestañas no han sido la mejor solución. Toman peso visual y agregan peso cognitivo a la GUI.

La ventana anterior la llamo un explorador de registros. Siguiendo la misma filosofía de los exploradores de archivos. Para ver los datos del registro en si utilizo un "visor".


Puedes apreciar que el visor solamente tiene un botón -Guardar-. Esta decisión de diseño es un poco rara de entender al principio, pero en las pruebas con usuarios reales funciona muy bien luego cuando se acostumbran. Además, he dividido la edición de fechas en tres tres controles. Esto neutraliza la diferencias en preferencias regionales para entender las fechas cortas que son muy problemáticas sino las tratas con cuidado. También el visor utiliza separadores visuales para tipos de información relacionada. Los GroupBox de Windows consumen mucho espacio y sino los utilizas bien agregan ruido a la GUI. Es por esa razón que he elegido esta solución. Está inspirada en los formularios Web.

Estas ventanas de costaron mucho trabajo confeccionarlas. Pero como en ciertos puntos mencioné, aún tienen problemas visuales que sigo resolviendo y que seguro en su momento se los mostraré. Más que todo es simplificar aún más la interfaz y degradar el peso visual de la GUI. La actual en cierta forma es muy chillante :p

Saludos!

newtron 02-04-2012 19:47:33

Gracias amigo Chris, siempre es bueno ver otras formas de hacer las cosas. Normalmente nos encerramos en nuestras soluciones y a mi me gusta ver distintas soluciones para enriquecer la mía propia.

Por cierto, en su día colgué en ese hilo una imagen de mi pantalla de ventas táctil y ya no se ve, alguien la ha saboteado, algún envidioso seguro. :p

Casimiro Notevi 02-04-2012 19:53:44

Cita:

Empezado por newtron (Mensaje 429179)
Por cierto, en su día colgué en ese hilo una imagen de mi pantalla de ventas táctil y ya no se ve, alguien la ha saboteado, algún envidioso seguro. :p

El problema es el servidor donde está alojada:
Cita:

Empezado por newtron
¡¡A que mola!! :p

[IMG ]http://www.imagengratis.org/images/dibujogj7eg.jpg[/IMG ]


Casimiro Notevi 02-04-2012 20:11:33

Simple ventanita de búsqueda... de 2004 :)




.

José Luis Garcí 02-04-2012 22:02:21

Hola Newtron, te comento, suelo poner en los form un botón buscar, que se une a un locate simplemente, en mi programa Creatablas, puedo crear un formulario de consultas variable y he usado un sistema de consultas programado, puedes ver el código aquí

mamcx 02-04-2012 22:44:20

Ya en todas mis apps (web & moviles) uso el mismo esquema:

http://www.uiparade.com/skill-type/search/



Implementado la misma idea del UISearchBar en los iOS:



Combinado con busqueda "Full text search" donde concateno los campos a buscar en uno solo (ej Postgres) o si el motor no lo soporta, hago una consulta tipo:

Código SQL [-]
SELECT * FROM Tabla WHERE Ref LIKE '1%' AND  Name LIKE '%1%'

Este estilo funciona para casi todo. Solo algo mas concreto (como el tipico form que permite busqueda especifica por campos) si la situacion lo demanda, pero mas como la opcion avanzada.


La franja horaria es GMT +2. Ahora son las 01:05:35.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi