problema con busqueda compleja


([N1] sistemasitp) #1

Estoy realizando una búsqueda compleja. He seguido el tutor de búsquedas. Es decir creo un formulario especial para busquedas, lo vinculo a la tabla desde la cual elabore la rejilla que mostrara el resultado de la búsqueda. El formulario donde pido los datos a buscar tiene 4 campos, si el usuario digita datos en los 4 campos la búsqueda resulta bien, peo si el usuario no ingresa ningun dato me muesta todo y eso es lo que no quiero porque no hay registros vacios en mi tabla. Lo que quiero es que me muestre en la rejilla solamente los registros que cumplan las cuatro condiciones de los 4 campos del formulario, si se deja algún campo en blanco no debe mostrar ningun registro porque estos campos siempre tienen valore en la tabla.


([N1] aztecmexico) #2

Como tu búsqueda tiene 4 componentes -me imagino que los tienes por lo de los 4 campos- posiblemente tengas que revisar la "mezcla", leete el manual del vDevelop y creo que en la mezcla encontraras la solución.

Cuando dices que si no ingresa ningún dato, te refieres a ningún dato en los 4 campos? o solo en uno?, o dos, etc.?

(Página 389)

Saludos.

Martin Ibarra.


([N1] Pepeto) #3

Tal y como planteas el problema, la busqueda esta funcionando correctamente, tanto si rellenas los 4 campos, como si no rellenas ninguno. (Y si es correcto que salgan todos los registros)

Pero como lo que quieres es obligar a que esten rellenos los 4 campos de la busqueda, porque no lo planteas de otro modo:
Condiciona el boton "Buscar" a que todos los campos de la busqueda tengan contenido ;)

un saludo.
José Luis
http://www.ascsl.com




([N1] sistemasitp) #4

Si el usuario no ingresa datos en los 4 campos, se asume que el contenido de los 4 campos sería vacio, y los dregistros que debería devolver son aquellos en donde los 4 campos correspodientes en la tabla sean vacios, segun mis dato debería ser ninguno. Si no rellena alguno sucederá lo mismo porque en mi tabla de dato esos 4 campos siempre tienen valores. Lo que no entiendo es porque salen todos si los campos son vacios. no se como condicionar la busqueda a que todos los campos tengan contenido.


([N1] sistemasitp) #5

Pepeto: Pero como lo que quieres es obligar a que esten rellenos los 4 campos de la busqueda, porque no lo planteas de otro modo:
Condiciona el boton "Buscar" a que todos los campos de la busqueda tengan contenido.

como hago para condicionar que los 4 campos a la vez tengan datos


([N1] Pepeto) #6

@sistemasitp

Puedes crear un evento en el formulario de la busqueda y asociarlo al boton.
En el evento puedes comprobar si todos los campos tienen valor , e incluso y alguno de los campos esta vacío, puedes utilizar las sentencias de interfaz para posicionar el foco en el campo vacío directamente para que el usuario pueda completarlo.

En la plantilla de vGestión me parece que habia algo similar en algunos formularios, pero no puedo asegurarte cuales, porque ahora mismo no la tengo instalada y no puedo comprobarlo.

un saludo
José Luis
http://www.ascsl.com


([N1] sistemasitp) #7

He mirado la plantilla pero no veo algo parecido.


([N1] JaimeNA) #8

Lo que tienes que hacer es condicionar cada elemento de la búsqueda a que no estén vacios, #Campo:isEmpty()=0, de esta forma si están todos vacíos no se realizará la búsqueda o no buscará por los campos que estén vacíos. Un saludo


([N1] sistemasitp) #9

Ya probé esta opcion de condicionar uno por uno e incluso todos con el operador and y or pero no resulto; lo que estoy viendo es que lo hice fue así isEmpty(#id)=0 me dice que la forma es #id:isEmpty()=0, lo probaré y le ocmento.


([N1] sistemasitp) #10

Por fin lo he solucionado, gracias al apouo del foro y en especial a JAIMENA. Les relato como lo solucioné por si alguien necesita hacer lo mismo:

Enunciado del problema: "disparar una rejilla con datos que cumplan dos o mas condiciones, si el usuario deja alguna condición vacia pues evidentemente no debe devolver valores de rejilla vinculada a la búsqueda puesto que todos los campos de la tabla tiene valores para las condiciones de la busqueda".

Solución:
1)Elaboré un formulario donde el usuario selecciona o digita los valores para la condiciones de la búsqueda. El formulario lo elaboré con el asistente de formularios, vinculandolo a la tabla de la cual saca los valores la rejilla
2)Para cada condición hay un campo en el formulario rotulado especial para consulta.
3)elaboré la consulta en mi caso para 4 campo pero funciona para más condiciones.
4)La tabla asociada de la busqueda es la tabla de donde saca los datos la rejilla
5)El formilario de la consulta fue el que elaboré en el punto número 1
6)Se crean 4 componentes de búsqueda que ajusten las cuatro condiciones, en mi caso cada campo de la tabla asociado a la búsqueda le defini un indice.
7)en la condicion de activo de cada componente le indique lo siguiente:
(#Campo1:isEmpty()=0) & (#Campo2:isEmpty()=0) & (#Campo3:isEmpty()=0) & (#Campo4:isEmpty()=0) ojo con los parentesis de las condiciones no me funcionaba por eso, pero después de tanto me acorde de una ayuda que me sumistro Pepeto sobre las condiciones y los parentesis y eso era lo que me faltaba. Las condiciones se dan muy similares a Java, C o pyton. Gracias por la ayuda. Espero le sirva esto a alguien que este en el mismo rollo