abr 19

Velneo V7 vs. V6.x

Posted in foro

Para muchos de los que se acercan a Velneo V7 (V7 para los amigos), y ya erán usuarios de V6.x, puede resultar confuso, cuando la primera vez que vamos a descargar la herramienta, nos encontramos con una larga lista de componentes y lo primero que intentan hacer, con cierta lógica por su parte, es identificar cada componente de V7, comparandolo con su homólogo en V6.x

Asi que, para aclarar esta duda que suele ser muy común, he decidido preparar una pequeña comparativa y una breve descripción de cada uno de los componentes de la herramienta:

Componentes V7 Componentes V6.x Descripción
vClient V7 vClient / vRunner / iRunner / Zeus33 Permite ejecutar las aplicaciones, teniendo en cuenta que siempre trabajamos en modo Cliente/Servidor y que en V7, existen versiones para Windows, Mac, Linux y Android
vWebClient V7 Permite ejecutar las aplicaciones desde los principales navegadores web.
vDevelop V7 vDevelop / EdMap32 Es la herramienta destinada a desarrollar los proyectos (el editor de mapas de V6)
vAdmin V7 VMotor Es la consola de administración del vServer, que en V6.x estaba unida al motor y se administraba desde el propio servidor.
vServer V7 VMotor En este caso, el vServer se ha convertido en un servicio y no tiene interfaz, todo se gestiona a través de vAdmin.
vInstallBuilder V7 Esta herramienta no existia en V6, y permite crear instalaciones de nuestros desarrollos para poder instalarlas en cualquier vServer mendiante un sencillo asistente.
vDataClient V7 Otra nueva herramienta que tampoco existe en V6.x y que nos permite tener acceso a todos los datos del vServer sin necesidad de crear la interfaz para ello.
vTranslator V7 Al igual que las anteriores, se trata de un nuevo componente pensado para poder distribuir nuestras aplicaciones en varios idiomas, y facilitar las traducciones de todos los textos de las aplicaciones (soluciones en V7)
vModApache V7 servidor HTML en VMotor Digamos que la funcionalidad de vModApache seria comparable a la funcionalidad del servidor HTML de V6.x solo que ahora este componente nos permite separar fisicamente el vServer de los servicios Web (incluso en maquinas diferentes).
vODCBdriver A diferencia del ODBC de V6.x, en V7 ahora el ODBC permite acceder a la base de datos de V7 desde el exterior.
vReports / Personalizador de informes Actualmente se encuentra en el foro de ideas de V7, a la espera de una solución. Pero hay 2 herramientas externas que permiten solucionar el problema, una de Bitcodesoft para Windows (video de vReports), y otra de AdInf multiplataforma que funcionan con V7.

Espero que ahora, todas las dudas hayan sido aclaradas y sepais que herramienta utilizar en cada caso.

Pero si deseas tener mas información acerca de Velneo V7, puedes mirar la zona INFO de la web oficial de Velneo o también puedes comprar el libro “Cambia el chip con Velneo V7

Si lo que necesitas es sacar algún proyecto adelante, con V7, pero no aún no tienes una base avanzada, no olvides que también podemos llegar a un acuerdo, ya que soy “programador Certificado en Velneo V7 2012“.

Create PDF    Enviar artculo en formato PDF   
comments: 1 »
oct 11

Prescindiendo de las variables globales

Posted in foro, programacion

Seguimos con la segunda parte de: ¡Las variables globales son prescindibles?

Claro que se podía mejorar el ejemplo: ¿cómo?

En V7 tenemos un nuevo subobjeto que no se valora lo suficiente, un objeto que dejamos marginado y que en ocasiones usamos, porque no queda mas remedio, la “Variable Local”.

Y es cierto, cuando creamos un Proceso, Evento o Función, no queda más remedio que usarlo, porque las “Variables locales” se van creando a medida que introducimos las sentencias. En condiciones normales, puede ser que incluso funcionen correctamente.

Pero ahora disponemos de “Variables locales” en objetos como la búsqueda, que pueden ser utilizadas en las Condiciones de los índices e incluso como Contenido para realizar la búsqueda por “Parte izquierda” o “Entre limites” de cada componente.

Asi pues, vamos a realizar el mismo ejemplo de ayer, pero esta vez, sin Variables globales:

Creamos una búsqueda, con los mismos componentes que en el ejemplo anterior, y usando los mismos índices: un componente EJE, usando el índice EJE (del campo #EJE de la tabla).

En la búsqueda creamos una variable EJER (numérica), y la utilizamos como Parte izquierda para la resolución del índice.

Y desde el proceso o evento que ejecuta la búsqueda, creamos un manejador de objeto con la búsqueda, asignamos el valor a la(s) variable(s) local(es) y finalizamos Disparando el manejador de objeto , obteniendo como resultado una lista de registros correspondiente a la tabla de la búsqueda.

El resultado debe ser, en el peor de los casos, el mismo que en el ejemplo anterior, con la variable global.

Pero he dicho, en el peor de los casos, porque aunque la lista de registros obtenida va a ser exactamente la misma, el tiempo empleado en realizar la consulta será considearblemente menor, claro dependiendo de cuantos registros tengamos almacenados en dicha tabla.

Create PDF    Enviar artculo en formato PDF   
comments: Comentarios desactivados en Prescindiendo de las variables globales
oct 10

¡Las variables globales son prescindibles?

¿Pregunta? o ¡Afirmación!, he ahí la cuestión …

Asi es, otra de tantas decisiones que hay que tomar, y que YO mismo, como muchos otros, sobre todo de los que aprendimos con versiones anteriores de Velneo, hemos usado (y abusado) de ellas.

V7 es otra cosa, y a veces, nos empeñamos en decir que algo no funciona cuando en realidad somos nosotros los que hacemos un mal uso, o uso incorrecto de los elementos que tenemos a nuestar disposición, y uno de ellos es la Variable global.

Y ya puestos, el título del post incita a cuestionar si el uso de las Variables globales es recomendable o no. Y cada uno tendrá su propia respuesta y estara en la certeza de que sus aplicaciones son las mejores que hay y que todo lo que hace lo hace bien, igual que yo, por supuesto. No estaba criticando a nadie, yo me incluyo en ese paquete.

Pero es bueno reconocer cuando uno se equivoca, porque ello nos permite mejorar y poner los medios para evitar esa y otras equivocaciones similares en el futuro.

La respuesta a esa Pregunta/Afirmación es, por mi parte, una rotunda ¡AFIRMACIÓN!, que voy a escenificar con un sencillo ejemplo, que me temo, somos muchos los que hemos abusado de el (aunque solo puedo confirmar mi experiencia).

Tenemos una variable global “$BC_EJERCICIO@proyecto.dat” y como era costumbre adquirida, al cambiar a V7, esa costumbre paso a ser “un vicio”, y lejos de preguntarnos si era la forma correcta de hacerlo, la usamos y nos autoconvencimos de que debia ser asi.

Tenemos una Búsqueda de la tabla “Facturas”, que es, multiejercico, para este ejemplo, y en la búsqueda usamos un Índice por el campo #BC_EJERCICIO (Ejercicio) para mostrar unicamente las facturas del ejercicio actual.

A la búsqueda le incluimos un componente por el Índice “BC_EJERCICIO”, correposdiente al campo #BC_EJERCICIO, con resolución de la “Parte izquierda” y en el contenido, le indicamos directamente la Variable global: $BC_EJERCICIO@proyecto.dat


Y como realizamos el ejemplo:

Desde un proceso o evento, asignamos el valor a la variable global, lanzamos la búsqueda y retornamos la lista a la salida.

Hasta aqui todo es correcto, y el ejemplo debe funcionar bien.

Pero, …. ¿se puede mejorar el ejemplo?

Pues claro que se puede, piensa en ello y mañana tendremos la solución …

PDF    Enviar artculo en formato PDF   
comments: 1 »
oct 7

Cálculos acumulados en la cabecera de página

Posted in ejercicios, foro, utilidades

Se dice, se comenta, se rumorea ….

Que no es posible incluir los acumulados de los importes de una página, al inicio de la página siguiente.

Eso es, lo que pretendemos es incluir un “Suma y sigue …” al inicio de cada página del informe, y surgen un problema en el calculo de los acumulados en las variables que utilizamos para la impresión de dichos importes.

A raíz de aqui, buscamos una solución sencilla que nos resuelva el problema:

y parte de esa solución esta en duplicar las variables y los calculos necesarios para los acumulados.

Asi es, puesto que tenemos dos variables PIE_DEB (para el acumulado del debe) y PIE_HAB (para el acumulado del haber) y que son las que utilizamos en el pie de página del informes (y estos cálculos los hace correctamente).

He decidido que necesitariamos otras 2 variables (aunque en la imagen solo se ve una de ellas) CAB_DEB (para el suma y sigue del Debe) y CAB_HAB (para el suma y sigue del Haber).

Y hasta aqui, no hay diferencias sustanciales en nuestro informe, salvo por el hecho de usar 4 variables en vez de 2.

El informe ya tenia 2 “Cálculos” PIE_DEB y PIE_HAB para realizar las operaciones con las variables PIE_DEB y PIE_HAB respectivamente, y las propiedades en cada uno de ellos para sumar en Modo: Acumulado y en Fórmula, el importe (#IMP_DEBE o #IMP_HABER) de cada una de las columnas.

Con esto, ya conseguimos que aparezcan las sumas en el pie de página correctamente …

Ahora, falta realizar los Cáculos para que aparezca el “Suma y sigue …” en la cabecera de cada página, antes de la primera línea de la página.

Y para eso creamos 2 nuevos Cálculos, uno llamado CAB_DEB y otro llamado CAB_HAB y en ellos usamos las propiedades Modo: Absoluto y en Fórmula, indicamos la diferencia entre el importe de la variable acumulada del pie de pagina anterior y el importe de la linea: PIE_DEB-#IMP_DEBE para la primera columna y PIE_HAB-#IMP_HABER para la segunda.

Y despues de realizar las pruebas con un informe con varias páginas de registros, he podido comprobar que funciona correctamente.

Create PDF    Enviar artculo en formato PDF   
comments: Comentarios desactivados en Cálculos acumulados en la cabecera de página
sep 14

Proceso para generar un fichero de texto

Posted in foro

Haciendo referencia a este hilo del foro, voy a comentar un poquito sobre la generación de ficheros de texto por medio de un proceso.

El proceso de la imagen, se corresponde a un proceso de generación de un archivo de remesas (cuaderno 19), similar al que se pretende generar, según las indicaciones del propio hilo del foro.

Despues de ver la imagen, y a pesar de lo complicado que pueda parecer, la generación del fichero de texto en el ejemplo se limita únicamente a las 2 ultimas lineas del proceso ( Fichero:Abrir y Fichero:Grabar linea), ya que el resto del proceso previo a estas lineas, sirve exclusivamente para generar el texto y almacenarlo en una variable local, que es la que luego utilizamos en la exportación.

Y bién, eso es todo, o ¿no?

Pues no, la pregunta inicial, hacia referencia a la Ventana de selección de fichero, que deja seleccionar pero no crear, y la respuesta creo que es otra pregunta,

¿deberia el usuario introducir el nombre del fichero? y con ello, arriesgarnos a que introduzca las 25 primeras páginas del “Quijote” en lugar del nombre apropiado.

O quizá seria mejor dejar simplemente que el usuario seleccione la carpeta, como se muestra en el “Tutor de importación y exportación” y luego le añadimos el nombre automaticamente para que el usuario no pueda cambiar el identificador manualmente. Por ejemplo, SENDA_DIRECTORIO + “/Remesa_” + #ID + “.txt” como ha indicado perfectamente gegeo.

Además, tal y como se ve en el ejemplo, al incluir el #ID del registro como parte del nombre del fichero, nos aseguramos que cada remesa generará un fichero diferente, y si la misma remesa es generada por segunda vez, el fichero será sobreescrito, manteniendo la última copia.

Pero si aún asi, insistes en permitir que el usuario escriba el nombre del fichero, mejor muestrale un formulario donde elegir y/o escribir el nombre del mismo, y luego realiza las comprobaciones necesarias antes de proceder a la escritura.

PDF Creator    Enviar artculo en formato PDF   
comments: 1 »
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 »
jul 12

Life is soft 2011!!!

¿Aún no te has registrado?

Aprovecha y hazlo ahora! … a la izquierda tienes en enlace directo para ir a la zona de registro.

Estos últimos meses, he publicado muy poco, y creo que sobran las excusas, todos sabeis el ¿porque?. El libro me ha tenido muy ocupado y el tiempo no me sobraba. Han sido 17 capitulos y XIII apéndices  para completar las más de 450 páginas de información para desarrollar una aplicación completa desde cero.

Claro que el tamaño, es decir, el número de páginas del libro dependerá del estilo, de las fuentes, de los margenes y del formato de papel utilizado para su publicación, pero lo que si tengo claro, es que el contenido que se publicará, será el mismo para todos ellos. Además, si al realizar la reserva y confirmación de asistencia al evento, que es “gratuita“, también realizas la reserva del libro, podrás recibir tu ejemplar y recogerlo en el propio evento.

Pero en éste artículo, se suponía que iba a hablar del evento ¡LIFE IS SOFT!

Hay muchas razones para asistir al evento que se celebra este año el 11 del noviembre de 2011 (11-11-11), una fecha dificil de olvidar, incluso para aquellos que solo hablan BINARIO.

Para todos los que paseamos habitualmente por esta URL (http://velneo.es/) es importante, y no solo porque se presentaran gran cantidad de novedades, que es casi lo menos importante, o quizá si sean importantes:

  • El “seminario” previo a la presentación
  • La presentación de la nueva versión de V7 “7.8.nnnn” y todas sus novedades
  • La presentación del libro “Cambia el chip con Velneo V7
  • La posibilidad de “Certificarse como desarrollador Velneo V7
  • El catering privado con los componentes del grupo “Velneo
  • Conocer una bella ciudad como Gijón, “y sus playas” 😉 para aquellos que aún no la vieron
  • Visitar nuevamente la ciudad para los que ya habíamos tenido el placer de estar allí
  • Poner cara a los nuevos amigos con los que nos cruzamos en el foro
  • Pero sobre todo, volver a ver a los amigos que ya tenian cara, pero la distancia nos impide ver más a menudo
  • Sidrinas que van … sidrinas que vienen …
  • Y seguramente algunas sorpresas que nos comunicarán en el propio evento.

El lugar escogido para el encuentro: el Teatro de la “Universidad de la Laboral” de Gijón.

Aún quedan varios meses, pero, con las vacaciones por medio, esos meses pasan volando y no deberiais dejarlo para el último dia, y digo “deberiais” porque yo ¡YA ME HE REGISTRADO!, y pienso estar allí, ¡SI! o ¡SI!

Para aquellos que no podais asistir, seguramente podreís ver los videos unos dias depués, pero que voy a decir, “el sabor de la sidrina no es el mismo en directo, que en diferido y sin sidra”.

Y para terminar una pequeña encuesta, y te agradeceria que dejaras tu opinión.

¿Que hechas en falta en el evento?, ¿hay algo especial que te gustaría para la herramienta?

Pide un deseo! , quien sabe, puedes tener suerte.

Un poquito de por favor, no vale pedir deseos sexuales, 😀 , que os veo venir.

PDF    Enviar artculo en formato PDF   
comments: 4 »
may 11

¿Un paginador de rejillas? ¡NO!

Posted in foro, ideas

Hace tiempo que venimos dandole vueltas a lo mismo, y voy a volver a dar mi opinion al respecto, que sigue siendo la misma que era.

Seguimos pidiendo calderilla y ya que vamos a pedir, deberiamos pedir en condiciones, pero para eso, debemos analizar el problema y porque no, debemos intentar darle una solución y no esperar a que todo venga echo “de serie”.

Siendo un poco egoista, pienso, si todo viene de serie, ¿quien cojo… nos va a contratar?

La herramienta tiene que ser buena, no mejor aún, tiene que ser excelente, pero no debe hacer cosas que podamos hacer nosotros …, debe hacer las cosas que nosotros no podemos hacer o que son muy complicadas.

El problema es sencillo, estamos pidiendo una “Rejilla con paginador” y esto no tiene sentido, por varias razones:

  1. Para paginar la rejilla, primero debemos cargar los registros. Si lo que queremos es evitar el tiempo que nos retrasa la carga de registros, poner el paginador en la rejilla, no soluciona el problema.
  2. Si de verdad queremos plantear una paginancion, debemos hacerlo en el origen, pero no en la rejilla o en el casillero, o en un bloc de formularios. Esos objetos son para visualizar el resultado de una lista, y la lista ya debe haber sido paginada previamente.

Por tanto el origen de la lista donde esta, ¡pues antes del retorno de la lista!:

  • ¿en la busqueda?
  • ¿en los indices de la tabla?

¿Deberia venir de serie?

pues que quereis que diga, que si viene incluido, lo usare cuando sea necesario. Pero …
… sigo analizando y probando el E.R.P. ye estoy realizando, y solo he necesitado el paginador para 2 tablas, (2 paginadores) y para colmo, son 2 tablas que tienen demasiados registros y que el usuario no maneja casi nunca (Poblaciones y Entidades bancarias)

Lo dicho, no veo un paginador en los objetos visuales,
Si hay que hacerlo, que se haga, pero creo que debe hacerse en busquedas o en indices, y luego, ya lo usaremos donde nos plazca.

Mas información al debate iniciado en este hilo del foro:

http://velneo.es/foros/topic/%C2%BFes-posible-paginar-resultados-en-html

Mas información sobre el paginador:

http://www.ascsl.com/2010/12/un-paginador-de-registros/

PDF    Enviar artculo en formato PDF   
comments: Comentarios desactivados en ¿Un paginador de rejillas? ¡NO!
may 3

Proceso de importación

Posted in foro, utilidades

Como solución al problema planteado por Velavisual en este hilo:

Emulando importación y exportación de listas virtuales

He preferido realizar las pruebas partiendo de cero, por varios motivos:

  • Un formulario con demasiados eventos y dificil de localizar el problema
  • El uso de cestas locales y procesos en 3 plano, son dificiles de procesar
  • La falta de datos para revisar el buen funcionamiento de los objetos
  • Y la poca disponibilidad de tiempo para solucionarlo

Asi que me he puesto a realizar el ejemplo y el resultado es este:

1. He creado un fichero de texto similar al que se indica en el hilo del foro:

2. He creado un formulario sin origen para ejecutar la importacion y mostrar el resultado

3, He creado un objeto CESTA para almacenar los registros que se muestran en la rejilla

4. He creado el proceso que carga la rejilla desde el control objeto del formulario

5. En el formulario he incluido las propiedades del control objeto , ejecutar el proceso que retorna el contenido de la cesta y mostrar la rejilla con el resultado

6. He creado un evento en el formulario para IMPORTAR el fichero de texto y he asociado el evento a un boton llamado IMPORTAR

En el proceso de importacion no he usado la busqueda, para evitar crear otro objeto, y lo he cambiado por Cargar Lista, pero deberia funcionar exactamente igual en cualquiera de los casos.

7. He creado una accion que ejecuta y visualiza el formulario

8. He ejecutado la aplicacion y al abrir el formulario aparece una rejilla vacia, luego pulso el boton IMPORTAR, y la rejilla se muestra con los registros que hay en la lista del archivo de texto.

Las pruebas las he realizado con una tabla de facturas para comprobar que los registros del fichero de texto se corresponderian con un codigo de registro en la tabla.

Despues de esto, todo ha funcionado correctamente, ahora solo tienes que revisar los pasos y detectar el error.

PDF Printer    Enviar artculo en formato PDF   
comments: 2 »
abr 2

Resultado del concurso

Posted in aplicaciones, foro, OpenApps

Como dije en este hilo:

http://www.ascsl.com/2011/03/pido-disculpas/

y es cierto, sintiendolo mucho, no pude presentar una sola aplicación al concurso, no…

… en realidad he presentado 3, y podreis tener mas información de cada una de ellas a partir del proximo lunes, aqui en este blog, 😀

No espero ser merecedor de ningún premio, pues la competencia creo que va a ser grande y no he podido dedicar demasiado tiempo al desarrollo de cada una de las Open Apps, pero si espero que me ayudeis a mejorarlas, ahora que estan a vuestra disposición y aporteis más contenido a las mismas, porque de ello se beneficiará la comunidad.

Podeis estar pendientes los próximos dias, para saber más sobre dichas Open Apps … 😉

PDF Download    Enviar artculo en formato PDF   
comments: Comentarios desactivados en Resultado del concurso