Como buscar un grupo de registro que cumplan cierta condicion


([N3] blanyi) #1

Buenas tardes Foro.
Tengo una tabla en la que tengo un además de otros los campo Saldo_Total y Fecha_Final, la cual tiene ademas un indice por cada uno de estos campo.
Quiero presentar en un rejilla aquellos registros cuyo saldo sea mayor que cero (0) .
O en otro caso presentar los registros cuya fecha_final este vacía.
Tengo una búsqueda con un componente BUS_SALDO_TOT con los siguientes datos:
Mezcla: Cruzar
Condición Activo: varloc_Saldo_total_ini!0
Indice: Saldo_Total
Modo: Entre Limites
Para los limites inicial y final tengo variables locales
Limite Inicial: Saldo_Total(varloc_Saldo_total_ini)
Limite Final: Saldo_Total(varloc_Saldo_total_fin)

El caso de la fecha final es parecido.
Tengo una búsqueda con un componente BUS_FECHA_FINAL con los siguientes datos:
Mezcla: Cruzar
Condición Activo: isEmpty(varloc_fecha_fin_ini)=0
Indice: fecha_final
Modo: Entre Limites
Para los limites inicial y final tengo variables locales
Limite Inicial: fecha_final(varloc_fecha_fin_ini)
Limite Final: fecha_final(varloc_fecha_fin_fin)

Cuando ejecuto el formulario me carga todos los registros, pero yo quisiera que al comenzar me cargara solo aquellos registros cuyo saldo_total sea mayor que cero o que la fecha_final este vacía.
Si le doy algún valor a las variable locales me funciona bien, me presenta los registros que cumplan la condición.
El problema que tengo es que no se como decirle que me presente solo los que la fecha_final este vacía por ejemplo porque si lo hago entre limites solo me muestra los registros que están en ese rango. Si lo hago con PARTE IZQUIERDA me muestra solo registro cuya fecha sea igual a la de la variable local. Y si se hace con todo el fichero pues lógicamente me los presenta todos.

Espero haberme explicado bien para ver si alguien tiene alguna idea de como puedo lograr lo que quiero con esta búsqueda.

Gracias.

YIMY MORA ACONCHA


([N1] sistemasitp) #2

Tenia un problema parecido y con la ayuda de foro lo solucione así:
este era mi caso:

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

mi problema eran los parentesis en las condiciones, espero le ayude a solucionar el problema.


([N1] Pepeto) #3

@blanyi

En tu caso, como lo que quieres es cargar todos los saldos mayores que Cero en la carga inicial, y en ese momento el valor de la variable es cero, solo tienes que incluir otro componente a la busqueda con la condicion contraria, y en los valores desde/hasta, le puedes indicar desde (0) hasta (99999999), los valores que sean necesarios..

De esa forma te aseguras que en la busqueda, siempre se cumple alguna condicion.

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