Seleccionar solo los registros que cumplan una condicion


([N3] blanyi) #1

Hola.
Hay cosas que parecen sencillas pero los que aun no dominamos Velneo no volvemos locos ante ciertas situaciones que en nuestras anteriores herramientas resolvíamos rápidamente.

En el contenedor de la base de datos necesito crear un proceso y para ello debo seleccionar de una tabla solo aquellos registros que cumplan la condición que el SALDO_ACTUAL>0 y la FECHA_VENCIMIENTO<currentDate()
Luego debeo recorrer esta lista para hacer unos cálculos sobre los registros que cumplan la condición.

Si pudiera usar SQL solo sería SELECT * FROM tabla_datos WHERE SALDO_ACTUAL>0 AND FECHA_VENCIMIENTO<currentDate()

Alguien puede por favor indicarme como se hace en Velneo.

Gracias.

YIMY MORA ACONCHA


([N1] Pepeto) #2

Puedes hacerlo de varias formas:

1. Crear una busqueda y usar un indice por FECHA , por parte izquierda ,con la fecha actual como contenido
y sobre el resultado de la busqueda, FILTRAR en el proceso o evento los resultados SALDO>0

2. Crear un nuevo indice condicionado a SALDO>0, y crear una busqueda como en el caso anterior, pero usando 2 componentes, el indice NUEVO (condicionado) y el indice por FECHA

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


([N1] VictorMC) #3

@Yimy

Tuve un Dejavu...

Para no complicarlas cosas creo que me tardaría más en describirlo que en hacerlo así que...
.
Lo hice ;)
.
Y pues ahí está en un par de segundos!!!
.
Antes se decía por acá: "Un MAPA vale más que mil palabras" y yo le pregunto a la comunidad ¿como lo vamos a decir ahora?
.
A caso un VINO? :P :)
.
Víctor Martínez Cortés
http://www.livesoftmx.com
empresa@livesoftmx.com
skype: livesoftware


([N4] mperez) #4

Hola Blanyi.

En Velneo, en la mayoría de los casos accedes a la información por navegacion, a aprtir de otros puntos de la base de datos, por ejemplo de un cliente lees sus facturas, etc, con la potencia de cargar plurales y Cargar Maestros, etc, pero no me voy a enrollar con esto.

En otras simplemente quieres sin partir de ningún punto (origen) leer un conjunto de registros como es el caso, tanto desde proceso o desde una acción.

Y en ocasiones puede ser así o simplemente que debido a que todavía estamos iniciandonos en esta nueva manera ,nos parece lo mas rápido.

Creo que eso es poco importante y lo que quieres en tu caso es solucionarlo y el hacerlo por un medio u otro ya vendrá con la práctica

Al Grano

Cuando sientes la necesidad de que te falta una Select, en Velneo lo que usas es una "Búsqueda" o un "Cargar Lista"

Ten en cuenta:

1º El Objeto Búsqueda es mucho mas potente de lo que inicialmente te puede parecer. Leete detenidamente todas las posibilidades

2º Una Búsqueda te permitirte por ejemplo buscar por el indice fecha de vencimiento, tanto en una fecha ,como en un rango de fechas

3º Pero ademas en esa misma Busqueda puedes usar la opcion Cruzar, y cruzas el indice anterior con otra nueva condicion sobre el indice Saldo Actual. (Tienes también Añadir)

Y asi complicarlo con distintos componentes e indices, como tu quieras Añadiendo o cruzando

- El rendimiento de esta forma de actuar es altisimo
- No tengas miedo en crear nuevos indices si los necesitas

4º En la opción de Búsqueda, tambien puedes filtrar, y hacer la busqueda por un solo indice fechas y después filtrar los que cumplen la condicion deseada, pero el rendimiento no es el mismo, lógicamente.

Pero otra opción es, simplemente condicionar los Indices, mírate todas las posibilidades de los Indices

Puedes tener un Indice por Fechas de Vencimiento que llamas Vencimientos
y crear otro indice que sea
"Vencimiento con Saldo" , cuyo componente es el mismo que el caso anterior pero condicionando el indice a que el Saldo > 0

y entonces la búsqueda la haces con un solo componente

La Busqueda es un Objeto, que lanzas desde un proceso, por tanto es reutilizable una misma búsqueda en todos los sitios que la necesites. Acciones, Formularios, Procesos, Funciones, etc
---------------------------------------------
Pero otra manera es las instruciones que tienes en un proceso.

LAs tienes aquí , Instrucciones de Lista

Pero no te compliques todavia, lo mas parecido al Select es Cargar Lista ,

Veras que el Select que propones es unsimple cargar lista utilizando el indice condicionado que puedes crear.

Pero mirate el resto de comandos de lista pues eso para cosas mas compeljas te permitira...

-Filtrar ese resultado por ejemplo por el Saldo (Aunque aqui no lo necesitas) o por cualquier comando.
- Multipartir lista
- Etc
...........................................................................................
y por supuesto Cruzar, añadir, esta lista con otras

Y te repito, todo esto Velneo lo hace con los Indices, pro lo que los rendimientos son impresionantemente altos.

Ahora faltaría hablar de la navegacion y de como en lugar de buscar una lista nueva de estas que cruzas partiendo de cero, es mas sencillo o directo muchas veces, simplemente si estas en una lista de clienets determinados, que has obtenido por el medio que quieras cargar su Plural de Vencimeintos y eso cruzarlo con otros, pero eso es otra historia.

Pero también desde lineas de proceso, puedes cruzar datos, por ejemplo con un Cargar Lista por Fecha y despues Cruzar esos resultados con los de otro Cargar Lista a partir de l Indice Saldo.

En este caso es mas complejo , pero es para que veas el abanico de posibilidades.

Y todas sencillas, la diferencia es que aqui debes tener en tus aplicaciones uan serie de indices con los que juegas en muchos sitios, debes perder el miedo que traes de otras bases de datos a crear índices.

------------------

Por si el rollo te ha liado.

La "select" que quieres es una simple búsqueda

Puedes hacerla mas o menos eficiente
- creando un nuevo indice y cruzando en la misma busqueda
- Creando un indice contidionado
- Utilizando el Indice Vencimiento, y filtarndo otras condiciones en la busqueda

o hacer lo msimo en un proceso con Cargar Lista


([N4] mperez) #5

Tengo el Blog un poco desoredenado, pero a proposito de este punto en concreto
http://mpoliver.wordpress.com/2012/01/12/busquedas-donde-estan-las-select-en-velneo-y-cargar-lista-y-otros/

Intentaré ordenar todos los artículos sobre base de Datos y darles coherencia a la vez que elimino algunos redundantes

Espero te sirva


([N1] sistemasitp) #6

Victor Mc.
Esta forma de buscar permite pasar variables al proceso, cierto?. Despues de varias semanas logre hacer búsquedas complejas, pero siempre lo he hecho con formulario de búsqueda y variables, pero esta forma es más simple.

Gracias por la oppen app del colegio la he estado mirando y he aprendido mucho de ella, es muy clara y sencilla de entender, es más, las dificultades que se me han presentado obedecen a las diferencias de terminologías entre nuestras culturas, la idea es tomarla como base para un sistema donde puede llavar el control de calificaciones o no se como le diran en mexico. Gracias nuevamente.


([N1] VictorMC) #7

@Sistemas ITP (No se tu nombre)

En Velneo el juego de las consultas de datos está en los índices principalmente, incluso v7 permite condicionarlos con formulas (lo que no se podía en 6x) y para ejecutar la seleción de los registros todo está en el objeto Búsqueda y la función de proceso Cargar lista.
Comprendiendo esto en verdad es muy simple crear una consulta para selección de datos, por ello incluso subí un ejemplo muy simple... pero es que así es... muy simple y fácil.
.
Respecto a la OpenApp Sicademic (aclaro que no es reclamo a la comunidad) en verdad es la primera vez que me dan las gracias :) y que bueno que te sea útil...
.
Quizá sea tiempo de agregarle algunas funciones nuevas... es decir actualizar la versión... pero la verdad pensé que nadie la usaba de verdad... je je je... veo haber si podemos agregar lo del control de calificaciones en breve.
.
Pues un abrazo amigo, te deseo suerte en tus proyectos y gracias por tus palabras.
.
Saludos a todos desde Puebla México.
.
Víctor Martínez Cortés
http://www.livesoftmx.com
empresa@livesoftmx.com
skype: livesoftware


([N1] sistemasitp) #8

Gracias de nuevo por la open app. Estoy en un proyecto para un colegio, Benito me ha colaborado mucho, el libro de Pepeto me ha aclarado otro tanto y por su puesto su oppen app ha sido clave para todo esto. En esto días he estado callado porque me he dedicado a borrar rehacer, etc y todo sobre su oppen app, desde mañana intentare agregar un cotrol de usuarios, par más adelante probar lo de los cobros a los estudiantes y pagos a personal. Y empesaré a tratar de desarrollar mi aplicación, agrandole una serie de reportes este tema aún no lo he tratado.
De nuevo mil gracias a todos y en especia Victor Mc por su open app. Mil gracia tocayo


([N1] VictorMC) #9

@Tocayo :)

Te deseo mucha Suerte!
.
Por acá andaremos... (cuando el tiempo lo permita) ya que siempre estoy cargado de trabajo Gracias a Dios.
.
Saludos cordiales desde Puebla México.
Víctor Martínez Cortés
http://www.livesoftmx.com
empresa@livesoftmx.com
skype: livesoftware


([N3] blanyi) #10

Gracias a todos por su ayuda.

Resolví el asunto según las recomendaciones de Miguel Perez en su blog. Cree sobre la tabla un dice por fecha de vencimiento y otro por saldo, luego cree una búsqueda con un componente por fecha de vencimiento resolviendo entre limites; añadí otro componente por saldo resolviéndola entre limites y cruzando con el componente anterior.
Después en el proceso lanzo la búsqueda en 3er plano para finalmente recorrer la lista y dentro del subproceso hago los cálculos necesarios y modifico los campos que necesito modificar.

Me sirvio mucho lo explicado por Miguel, debe seguirse con este tipo de explicaciones que nos ayuden a entender la filosofia de Velneo.

Cordial Saludo.

YIMY MORA ACONCHA