ene 8

Búsquedas en 3 plano

Escribo este artículo, para aclarar aún más, si es que se puede, lo que ha descrito bastante bien nuestro amigo Fran Varona en este hilo del foro: Cargar lista Vs. Búsqueda

Una discusión que ha dado muchos quebraderos de cabeza y que por fin se desvela.

Para cada tabla, tenemos una búsqueda, en la que aprovechamos para usar varios indices y así, no tener que definir múltiples búsquedas:

Y en esa búsqueda hemos definido unas variables y unos componentes de búsqueda, para realizar búsquedas complejas.

Si os habéis fijado bien en vBase, veréis que en cada una de las opciones del menú, tenemos un formulario con un alternador, y desde un manejador de evento BUS, se llama a la búsqueda mediante el manejador de objetos:

En el evento, creamos un Manejador de objetos para llamar a la búsqueda y le pasamos los valores a las variables locales, antes de Disparar el objeto. Así, la búsqueda retorna una lista de registros con aquellos que cumplen las condiciones establecidas por las variables.

Tal y como se indica en el foro, las búsquedas siempre se ejecutan en 3º plano, pero esta afirmación solo es válida en aquellos casos en que las búsqueda se realiza por un solo índice, ya que cuando intervienen varios índices para obtener un resultado, las operaciones de Añadir, Cruzar y Quitar se realizan en 1º plano. Esto significa que el rendimiento baja considerablemente en la medida en la que aumenta el número de registros de la tabla en cuestión.

La solución a este problema, es sencilla, crear un proceso para llamar a la búsqueda:

El proceso debe cumplir unas reglas básicas:

  1. El proceso, como destino, debe ser de tipo Lista y para la misma tabla que la búsqueda a ejecutar.
  2. Tener las mismas variables definidas que la búsqueda a ejecutar, y para mayor sencillez, llamamos a las variables exactamente igual que en la búsqueda, de echo, podemos copiarlas.
  3. Creamos un manejador de objetos para llamar a la búsqueda, le pasamos todas las variables, y al finalizar retornamos la lista a la salida.

Ahora ya solo tenemos que crear el manejador de evento en el formulario principal, para llamar al proceso en 3º plano (en vez de a la búsqueda), asegurándonos así, de que esta vez si, la búsqueda se ejecutará en 3º plano y las operaciones de Añadir, Cruzar y Quitar, también.

Pero en este mismo hilo del foro se extiende la pregunta sobre la optimización de este tema, cuando además debemos usar búsquedas con formulario, pero este tema, lo dejare como ejercicio para otra ocasión, aunque la idea ya esta en el aire.

¿Tengo que repetirlo?

Pues vale, lo repito:

Antes de ejecutar el manejador de objetos que dispara el proceso en 3º plano, debemos pedir el formulario para introducir los valores por el usuario, y luego, pasar esos valores al proceso.

PDF Creator    Enviar artculo en formato PDF   
comments: 1 »
oct 17

Reserva ya el “Manual de usuario de vConta”

Posted in formación, tutores

Ahora ya no es ningún secreto,

Ya esta disponible el “Manual de usuario de vConta” para que puedas sacar el mayor partido a la aplicación de contabilidad de vTodo.

Claro que nos surge una pregunta, la primera que todos haceis al conocer la noticia:

Hay un manual de usuario, y vConta tiene 3 versiones:

  • Básica
  • Profesional
  • Empresarial

¿Para que versión es válido el manual?

La respuesta es: “para todas las versiones”

Sea cual sea la versión que has adquirido, el manual se adapta perfectamente, el único inconveniente que puedes encontrar, es que en el manual se hablará de opciones que no estan incluidas en tú versión.

Pero eso tiene fácil solución, solicita la versión empresarial a vTodo y podrás disfrutar de toda la potencia de vConta.

Para todos aquellos que penseis asistir a “Life Is Soft 2012” y querais llevaros algún ejemplar en papel, os recomiendo que hagais la reserva cuanto antes, ya que las unidades disponibles serán limitadas y podrias quedarte sin el.

¿Como debes hacer la reserva?

Envia un email a info@vtodo.es y solicita las copias que necesites, su precio es de 29,90 € I.V.A. incluido (gastos de envío aparte).

Gracias al equipo de vTodo por su apoyo en este proyecto.

Y no olvideis, que aquellos que aún no han adquirido el libro “Cambia el chip con Velneo V7” también pueden reservar una copia impresa para llevarsela puesta en “LIS-2012”

Un abrazo fuerte a todos.

¡Reservalos ya! y llevatelos en LIS-2012

Create PDF    Enviar artculo en formato PDF   
comments: 1 »
sep 5

¿Función o proceso?

En Velneo V7, como en la mayoría de los lenguajes y herramientas de programación, hay problemas que podemos resolverlos de distintas formas y obtener el mismo resultado.

La diferencia no esta en el resultado en si, que de un modo u otro será el mismo, la verdadera diferencia está en usar el método óptimo para llegar a ese resultado.

Y es aqui, donde se nos plantea la siguiente duda, en multitud de ocasiones, para solucionar un problema, podemos usar una “Función” o un “Proceso”.

A fin de cuentas, una “Función” es muy similar a un “Proceso” en muchos aspectos, aunque también tienen algunas diferencias

La función:

  • Permite hasta 10 parámetros de entrada, aunque esa barrera ya la habiamos superado cuando se publicó este articulo: Parámetros en funciones de V7
  • Tiene un parámetro de salida, aunque también habiamos solucionado este problema encadenando los valores (en el mismo artículo).
  • La función no tiene una tabla de origen, y tampoco destino.

El proceso:

  • Podemos usar tantos parámetros como necesitemos, eso si, usando el manejador de objetos para poder pasar y recibir parámetros.
  • Podemos obtener varios valores de retorno.
  • No es necesario indicar todos los parámetros en la llamada, solo aquellos que sean realmente necesarios.
  • El proceso puede ser: sin origen, o con origen y destino en una misma tabla (de tipo ficha o lista) dependiendo de donde lo vayamos a llamar.

Veamos ahora un ejemplo real que podriamos usar para solucionar un problema común:

La función:

El proceso:

Como podemos observar, las dos imagenes representan lo mismo:

Pasamos como parámetros de entrada los campos #ALM (almacén) y #ART (artículo), y comprobamos si existe el registro en la tabla de “Stock”, y si no existe, lo creamos. Al finalizar retornamos el #ID del registro creado (esto no es necesario pero se ha incluido para ver el retorno de valores).

Ademas, la definición es practicamente igual:

  • Las mismas variables en el panel de subobjetos
  • Las mismas instrucciones en el editor central
  • Y el mismo origen, en el panel de propiedades, aunque en el caso del proceso, esto puede cambiar.

Hemos visto como se definen las funciones y los procesos, pero como sería la llamada para ejecutarlos, porque aqui es donde realmente se diferencian:

En el caso de la función, la llamada es asi:

Necesitamos una variable a la cual asignamos el resultado que retorna la función, y despues, llamamos a la función pasandole todos los parámetros que necesita.

En el caso del proceso, la llamada mediante el manejador de objetos es asi:

La llamada mediante el manejador de objetos es un poco más compleja, ya que hay que definir el objeto en el manejador, luego asignar los valores a las variables con SET, después, ejecutar el proceso y, en último lugar, recoger los valores retornados con GET.

A la vista de los ejemplos, podemos ver que el uso de uno u otro método es aconsejable en los siguientes casos:

  • La función es obligatoria cuando necesitemos hacer uso de ella desde un contenido inicial.
  • El proceso es recomendable cuando necesitemos muchos parámetros o vayamos a retornar varios valores.
  • El proceso es obligatorio si queremos ejecutar en 3º plano.
  • El proceso es recomendable cuando los parámetros de entrada no sean obligatorios

Gracias por la visita y hasta pronto.

PDF Printer    Enviar artculo en formato PDF   
comments: 6 »
jun 14

Consejos para mejorar el desarrollo en la nube

Posted in programacion, tutores

Antes de iniciar este artículo, quiero agradecer enormemente a Filipe sus aportaciones al foro, que sin duda, nunca pasan desapercibidas, como la de este hilo del foro:

http://velneo.es/foros/topic/lentitud-en-aplicaciones-cloud/

Asi pues, como se indica en el propio hilo, he pensado que hacer un recopilatorio de todas las buenas ideas que mejoran la experiencia de programación en la nube.

Y porque en la nube y no en local, si para Velneo V7, es igual, puede trabajar exactamente igual en local que en la nube.

Pero en realidad, ¡NO!, no es lo mismo:

  • Si la aplicacion la desarrollamos en local, y funciona bien. Es posible que cuando la instalemos en la nube, sea un petardo y vaya como el culo. Lo siento por la expresión “vaya como el culo” pero debes reconocer que es descriptiva del sentimiento que pretendo transmitir.
  • Sin embargo, si la aplicación la desarrollamos en la nube y funciona bien. Entonces, no de bemos preocuparnos, porque cuando la ejecutemos en local, funcionara “que te cagas” :) . Tambien siento esta expresión, pero a que también te has emocionado.

Partiendo de este, como primer consejo para empezar a desarrollar con Velneo V7 y conseguir un resultado decente, aqui dejo algunos consejos:

  1. Evita las funciones, si puedes usar un proceso lanzado desde un manejador de objetos, usa el manejador (También te permite enviar parámetros).
  2. Las tablas en memória son lentas comparadas con v6 (evitar siempre que se pueda). Como ejemplo te digo que en una de las pruebas que hice, en el on-init de un formulario llamava a una función, entre devolver un contenido estático y devolver un dato de una tabla en memória la diferencia es abismal.
  3. En la mayoria de los casos ganamos velocidad si las búsquedas y/o cargar listas las lanzamos con el manejador de objetos en el servidor (Hay que tener cuidado, para no saturar el servidor con demasiadas tareas, si es solo consulta en principio no hay problema).
  4. Evitar al máximo poner en las condiciones de activo y visibilidad de objectos, funciones. Estas condiciones se evaluan varias veces al iniciar el formulario, y siempre que se ejecuta un evento del formulario o que este se refresca.
  5. Evitar siempre que posible el uso de variables globales. Con la funcionalidad del manejador de objectos para pasar parametros a búsquedas, procesos, etc, ganamos mucha velocidad y no necesitamos para nada de las variables globales. Normalmente solo necesito de dos o tres variables globales por aplicación (EJ: Id de usuario logeado, etc.)
  6. En las rejillas por defecto no listar datos, solo cuando se pincha en buscar (personalmente a mi no me gusta demasiado, parece que no hay datos, pero siempre podremos cortar la lista para que solo nos devuelve un numero x de resultados, así no quedamos con la sensación de que no existen datos). Esto incrementa mucho la velocidad de la aplicación. Ten en cuenta que si abres un formularios con sub-formularios y cada sub-formulario tiene su rejilla, al abrir el formulario hay que cargar todos las listas de todos los subformularios. (Si no está visible la rejilla, los datos los siguen cargando)
  7. Limitar el uso de CSS. El uso excesivo de CSS en las aplicaciones, hacen que estas sean más lentas, principalmente si estos datos los recoje de una tabla o usa información de una tabla, dá igual que sea en memória o en disco.
  8. Evitar guardar en las tablas imagenes. Yo opté por guardar las imagenes externamente, y genero de forma automática una miniatura de la imagen de muy reducida dimensión solo para poder presentarlas en las rejillas, en los formularios las visualizo usando html.
  9. Cuidado con el tamaño de las imagenes que creamos de manera estática en el vdeveloper, intentar al maximo optimizar su tamaño.

Ahora que ya hemos descrito cada uno de ellos, y tenemos la teoría, nos queda la sensación de que nos falta algo. ¿Cómo poner en práctica estos consejos?

  • Para el punto nº 6, tenemos otro ejemplo perfecto y origen de una buena técnica de progamación en el blog de nuestro amigo Nacho: Optimizando rejillas

Ademas de todos estos consejos de Filipe, voy a recordar algunos consejos que muchos conocemos pero que son importantes para todos los que llegan a V7 .

  1. Si puedes hacerlo en el proyecto de datos, y concretamente en la estructura de tablas, hazlo. Asi es, cualquier cosa que puedas hacer en la estructura de la base de datos, siempre mejora el rendimiento y ahorra muchas horas de programación, por ejemplo: contenidos iniciales en los campos, actualizaciones, eventos de tabla.
  2. Parece muy obvio, pero a veces olvidamos que los “Filtros” están para no usarlos. Evitalos siempre que puedas, y cuando no tengas mas remedio que usarlos, evitalos también.
  3. Usa siempre el “Alternador de listas” siempre que sea posible, ya que tiene muchas ventajas y pocos inconvenientes, que también los tiene. Aqui tienes más información sobre el Alternador.
  4. Ahora tenemos “Constantes”, usalas porque permiten una programación limpia y abstracta. Aqui explico algunas de mis razones: ¡Ser constante es bueno!
  5. vDiseño es una buena base para adoptar en las aplicaciones, principalmente por una razón: es mas fácil de entender el código cuando trabajas con aplicaciones de otros desarrolladores.
  6. Siguiendo un consejo de un amigo, “la simplicidad, es la complejidad absoluta“. Hazle caso, la vida ya es bastante complicada, no la compliques más todavia. Las cosas sencillas funcionan mejor, y es cierto, son mas dificiles de programar, pero el resultado es optimo para el usuario.
  7. Un consejo mio: “pierde unas horas o dias en analizar la aplicación y ahorrarás dias o meses en soporte y correción de errores”. Un buen análisis es tan importante o más, que la estética de la interfaz. La interfaz vende, pero es el chasis de nuestra aplicación quien soportará todos los golpes.
  8. No tengas miedo al fracaso. Para estar seguro de habler logrado un éxito, debes haber fracasado en varias ocasiones. Imagina que en tu primer intento, logras que todo funcione correctamente, si te das por satisfecho, nunca podrás estar seguro de haber conseguido el resultado ideal. Seguramente ese resultado podría mejorarse.
  9. QML y vJavaScript son la caña, pero no son la solución a todos los problemas. No abuses de estas herramientas, porque son para lo que son, para sacarnos de los apuros, no para convertirlas en el pan nuestro de cada dia.
  10. Si no tienes experiencia con una herramienta de desarrollo, la solución no esta en correr para adquirirla. Tomalo con calma, y externaliza tus proyectos mientras adquieres dicha experiencia. Despues de haber colaborado con muchos desarrolladores que usan Velneo para sus desarrollos, sólo espero que hayan quedado satisfechos con el trabajo realizado.

Y desde aqui, tambien quiero decir que estoy totalmente de acuerdo con Filipe, Roberto Blasco, Adelo Herrero y otros en algunas cuestiones. Por mas que nos empeñemos, Velneo V7 no es la solución para todo, y si probamos a unir V7 con otras herramientas, la potencia que adquirimos en los resultados es inmejorable.

  • Para la web, nada como Velneo V7 + vModApache + PHP
  • Para mobilidad, Velneo V7 + Android / iOS

Aunque algunas veces, también hay que reinventar la rueda 😉

P.D. Se agradece cualquier aportación que pueda ayudarnos a mejorar, estas invitado a compartir tus experiencias.

PDF Creator    Enviar artculo en formato PDF   
comments: 3 »
ene 20

PRE y POST al botón Aceptar de un formulario

Posted in ejercicios, trucos, tutores

Aqui os dejo un enlace al hilo relacionado con este artículo.

http://velneo.es/foros/topic/interfaz-aceptar-1

Para los que venimos de V6, en ocasiones se echa de menos los eventos PRE y POST a la pulsación del botón aceptar de un formulario:

En V7 no tenemos esta opción, o al menos no tal como la conociamos.

En V7 podemos crear uno objeto Formulario con un botón Aceptar y en las propiedades del botón, le indicamos el Comando “Aceptar”, esto funcionaria correctamente y guardaria los cambios de la ficha cerrando despues el formulario, pero a cambio de la sencillez, no podemos ejecutar ninguna sentencia ni antes, ni después de guardar la ficha.

Si necesitamos ejecutar algún evento PRE o POST al cerrar el formulario, debemos realizarlo de la siguiente forma:

Creamos un evento “EVENTO_ACEPTAR” en el formulario, que no es otra cosa que un proceso interno al formulario y que solo puede ser ejecutado desde ese objeto, y en el evento, indicamos las siguientes instrucciones:

  1. Sentencias del PRE …. (escribimos todas las sentencias que queramos ejecutar antes de guardar la ficha)
  2. Interfaz: Guardar ficha en alta o modificacion … (aqui es donde se guardan los cambios del registro en la base de datos)
  3. Sentencias del POST … (aqui ya no podemos modificar campos de la tabla, pero podemos ejecutar otras sentencias)
  4. Interfaz: Aceptar … (Cierra el formulario)

Tras la ejecución del comando “Interfaz: Aceptar” ya no se ejecuta nada, pero tampoco tiene mucho sentido, si debemos mostrar algún mensaje o realizar alguna operación, debemos hacerlo en las posiciones 1 (PRE) o 3 (POST).

Para cualquier duda, podeis dejar un comentario.

PDF Printer    Enviar artculo en formato PDF   
comments: 1 »
nov 15

Donde puedes comprar el libro?

Posted in tutores

Como ya sabeis, el viernes 11 de noviembre de 2011 (11-11-11), se puso a la venta el libro, y todos los que tenian su reserva, pudieron llevarselo puesto.

Pero para quellos que no pudieron estar, pueden adquirir el ejemplar en papel en:

Si lo que deseais, es una copia en formato electronico, podeis adquirirla en:

Además, la aplicación desarrollada como ejemplo, la podeis descargar totalmente gratuita desde el siguiente enlace:

http://velneo.es/cambia-el-chip-con-velneo-v7/

Muchas gracias por vuestro interes y espero que sea de mucha ayuda.

PDF Printer    Enviar artculo en formato PDF   
comments: 5 »
ago 8

El cuento de caperucita roja

Posted in foro, humor, tutores

Erase una vez … Caperucita roja.

Caperucita Roja era una chica normal, llamemosla “X”, que después de mucho tiempo viviendo por el morro en casa de sus viejos, no le quedo más remedio que empezar a currar para poder independizarse, y como el curro no sobraba, después de mucho buscar, no tubo más remedio que aceptar un trabajo de mensajera (y no ten xagero).

Al comenzar su nuevo curro, lo primero que le dierón fue su “Caperuza Roja”, uniforme laboral que entregaban a todas las chicas y que estaban obligadas a llevar durante toda la jornada de trabajo y una Cesta de color rojo a juego con su caperuza.

Su trabajo consistia en realizar recogidas y entregas de documentos, y para ello, todos los dias en la oficina les entregaban una lista con los clientes a los que tenian que visitar para recoger la documentación.

Caperucita , que era muy curiosa y limpia, todos los dias, antes de empezar a trabajar, limpiaba su Cesta con un paño para evitar que pudieran quedar restos “del bocata” del dia anterior. “Cesta: limpiar

Despues, ya preparada para visitar a todos los clientes de su lista, montada en su ciclomotor (también de color rojo, como los del telepizza ) comenzó a visitar a los clientes uno a uno, y cada vez que llegaba a uno de sus destinos, llamaba a la puerta y pedia al cliente los documentos necesarios, y el cliente preparado para su visita, ya los tenia preparados para no entretener a Caperucita en su trayecto. Asi pues, Caperucita cogia los documentos del cliente y abria su cesta para guardarlos y seguir su camino al siguiente cliente. “Cesta: agregar lista

Uno tras otro, Caperucita visitaba a todos los clientes de la lista y les pedia los documentos, guardando todos en la lista. “Cesta: agregar lista

Algunos de esos clientes, cuando se les pedian los documentos, los revisaban uno a uno antes de entregarlos. “Cesta: agregar ficha

Otros, sobre todo, aquellos que tocaba recogida después del almuerzo, entregaban los documentos con un fuerte olor a chorizo del bocata, y a caperucita no le quedaba mas remedio que guardar los documentos, aunque sabia que eso, le traeria problemas antes o después.

El fuerte olor a embutido, no pasaba inadvertido y durante el almuerzo de Caperucita, el lobo, hambriento como el solo se acercaba lentamente hacia la cesta y con mucho cuidado para no ser visto, mordia los documentos y escapaba llevandose siempre algunos entre sus fauces.  “Cesta: quitar lista

Caperucita corria detras del lobo para recuperar sus documentos, pero no siempre lo conseguia.

De vuelta a la oficina, Caperucita Roja, igual que todas las demás, entregaban sus documentos, y los encargados del almacén, ordenan y revisan uno a uno todos los documentos para preparar la mercancia. “Cesta: procesar

Al finalizar, Caperucita se aseguraba de eliminar aquellos documentos que hubieran podido quedar en su cesta, dejandola vacia para el proximo dia de trabajo. “Cesta: limpiar

😀 😀 😀

Se me fue la pinza, jajajaja, pero si habeis conseguido entender algo mejor el uso de las Cestas, entendereis porque el Leñador se casó con la Abuela, y empezó a vivir “del cuento”.

Y si aún os quedan dudas, siempre podeis dejar las preguntas en los comentarios del post, y con gusto las respondere.

PDF Download    Enviar artculo en formato PDF   
comments: 3 »
may 24

Cambia el chip

Que puedo decir, acabo de enterarme por el blog oficial de Velneo, y parece que se refieren a mi, mejor deberiais leer el post original antes de continuar…

Leer la noticia completa…

Espero que ahora podais entender porque he tenido un poco abandonado el blog, como podeis ver, no he dejado de escribir, todo lo contrario, he escrito aún más y con más ilusión.

Han sido varios meses de duro trabajo en el que he gastado la tinta de cientos de boligrafos y una cantidad indecente de oleo para dibujar las imágenes. :)

Espero que el resultado sea del agrado de la mayoría, y sobre todo, que este manuscrito cumpla su objetivo principal, que es:

¡¡¡ Cambiar el chip !!! y ayudar a entender la filosofia de Velneo V7 como herramienta que consigue que algo tan abstracto como puede llegar a ser la programación, sea divertido y ameno.

Espero que reserveis con tiempo vuestro ejemplar, para que así me de tiempo a realizar las copias necesarias para cada uno de los interesados. Además necesitare realizar un pedido de plumas,  oleos y papiros que determinaré en función de los pedidos realizados.

Nos vemos en el evento, 😉

¡LIFE IS SOFT!

PDF Printer    Enviar artculo en formato PDF   
comments: 15 »
feb 3

Guia V7: ejemplos

Posted in ejercicios, tutores

Conjunto de ejemplos y utilidades para empezar a desarrollar con V7

Si sabeis de algún enlace interesante, podeis indicarmelo y actualizaré este post.

Recomendaciones a tener en cuenta:
Nomenclatura de objetos:

La documentación:

Sobre los componentes de la herramienta:

Ejemplos sencillos:
Ejemplo básicos para iniciación al desarrollo con V7:

Ejemplos avanzados:
Aqui podreis encontrar ejemplos avanzados de pequeñas aplicaciones o utilidades:

También podeis encontrar más ejemplos entre las Open Apps.

.

PDF    Enviar artculo en formato PDF   
comments: Comentarios desactivados en Guia V7: ejemplos
feb 2

Guia V7: proyectos de aplicación

Posted in tutores

En esta pagina podras encontrar enlaces directos a cada uno de los objetos disponibles en los proyectos de aplicación de Velneo V7:

Proyectos de aplicación:
Acción

Alternador

Bloc de formularios

Búsqueda

Casilleros

Cestas

ComboView

Dibujo

  • Ver el cuadro de Proyecto de datos

Dock

Ficha QML

Formulario

Informes

Lista QML

ListView

Localizadores

Marco

Menús

Multivista

Procesos

  • Ver la guia del proyecto de datos

Rejilla

Rejilla avanzada

TCP

Toolbar

Tubos de ficha y lista

Vista de datos

Varios…

.

.

PDF Creator    Enviar artculo en formato PDF   
comments: 3 »