Este fin de semana he estado de limpieza. Sí, limpiando mi server de la nube que estaba hecho un pequeño «cajón desastre» y lo necesitaba, por agilidad mía al trabajar con los proyectos y del server también al cargar.

Mi problema era que tenía en el server una solución solamente, «shared» donde tenía muchos proyectos, algunos creados por mí, otros que eran de las open apps que me bajo de Velneo para probar, etc. Necesitaba limpiarlo porque ver la vista de los proyectos en la solución era una maraña bastante difícil de seguir, además al abrir la solución tardaba lo suyo.

Ahora ya está limpio, claro, ágil, además esta tarea me ha ayudado a descubrir unas cuantas cosas, buenas y otras no tan buenas.

Aquí van las buenas:

– Se pueden borrar proyectos!

Simplemente desde el vdevelop, proyectos cargados y botón derecho del ratón, eliminas. No permite eliminar si el proyecto está editado, pero se puede «Des-editar» con la opción «Deshacer desprotección proyecto»

– Se pueden mover objetos entre proyectos! Se mueven también los objetos que el objeto movido esté utilizando, con lo que no hay que ir uno por uno.

Tenía mi proyecto en la solución shared, quería moverlo a la solución «Biblioteca» y pude hacerlo gracias a esta opción, siguiendo estos pasos:

  1. Creé una nueva solución
  2. Dentro de la nueva solución, creé nuevo proyecto de datos y nuevo proyecto de aplicación
  3. En los proyectos originales que estaban en shared, modifiqué sus propiedades, heredando los nuevos, creados en la solución nueva
  4. En los proyectos originales de datos y de aplicación, fui moviendo cada objeto a los nuevos proyectos. Al mover, pasa todo a la carpeta que le indiques, no obstante, hay que ordenar después porque se mueven los objetos que use el primero.

También utilicé esta opción para limpiar iconos que estaba usando de otros proyectos. Moviendo objetos y re-nombrando después en el proyecto nuevo.

– Renombrar objetos y  que los otros usen el nuevo objeto (renombrado) es tan fácil como en 6x.

Estaba heredando y usando unos iconos de proyecto que me había ido bajando de open apps desde el principio, y no estaba muy ordenado. Así que fui moviendo los iconos de los proyectos «anticuados» al proyecto «iconos» que viene por defecto con vBase.

Después en el proyecto iconos, localicé un icono que se adecuase a mi propósito, lo corté y después renombré los que venían del otro proyecto con el nombre del original del proyecto de iconos. Así con todos hasta tener todo limpio. Y después volví a instalarme vBase de modo que ya dejé el proyecto de iconos original.

Todos los objetos de mi proyecto Biblioteca que usaban cualquier icono, renombrado o no, lo capturaron de nuevo sin problema, a pesar de que no eran objetos de su propio proyecto, sino de uno heredado.

En definitiva, que fue un trabajo de «encaje de bolillos» que funcionó a la perfección como siempre, Velneo V7 conserva toda la esencia de esto que ya disfrutábamos en 6x.

Y las no tan buenas

– No se pueden mover proyectos entre soluciones

– Importar componentes te copia las soluciones de un server a otro. Creo que sería interesante si se pudiesen mover las soluciones o algo así como importar dentro del mismo server.

Aunque esto creo que me ha pasado por el desconocimiento inicial, ahora ya no me pilla en un desorden tal ;-)

Organización servidores

Ahora tengo dos servidores en la nube (como son gratis :-) organizados del siguiente modo:

Server 1:

Con las soluciones:

– shared

Open apps que necesite para otros proyectos (que estarán en las otras soluciones).

En esta no tocaré nada para desarrollar. Sólo serán las cosas originales de Velneo.

Por ejemplo cuando Velneo saque una nueva versión de vBase, la reinstalaré, se re-escribirá y todos los proyectos que la hereden ya tendrán todo lo nuevo.

– Mis soluciones

– Biblioteca

– …

Los proyectos aquí siempre podrán heredar los proyectos que estén en shared.

Una solución por aplicación es lo más sensato y organizado.

Server 2:

Con la solución shared solamente. Este servidor lo creé nuevo, registrándome con otra cuenta de e-mail en la página de Velneo, será para bajarme pruebas de las open apps. Se puede decir que será usado de forma temporal para probar, aprender de otras apps, etc.


Al comenzar a aplicar estilos gráficos en Velneo V7 es un poco confuso, porque hay un nuevo concepto que condiciona mucho la aplicación de estos estilos y son los layouts.

Éstos controlan muchas cosas del aspecto de los formularios, de forma automática y supone un punto importante a tener en cuenta al aplicar estilos, por la inserción de los dibujos de cabecera y pie, etc.

Los objetos que nos proporciona la «open app» para el estilo de formulario son:

  • FORM_BGR -> Fondo formulario
  • FORM_FOOT -> Pie formulario
  • FORM_1_HEAD_LEFT -> Cabecera izquierda de formulario principal
  • FORM_1_HEAD_RIGHT -> Cabecera derecha de formulario principal
  • FORM_2_HEAD_LEFT -> Cabecera izquierda de formulario secundario
  • FORM_2_HEAD_RIGHT -> Cabecera derecha de formulario secundario

¿Cómo?

A continuación indico paso a paso lo que hago para aplicar el estilo en un formulario:

  • Dibujo de fondo. En el formulario aplico el dibujo para fondo formulario que viene en la plantilla.
  • Sin márgenes. Todos los márgenes a 0. Esto lo hago para conseguir que los dibujos de cabecera y pie queden sin separación del extremo de la ventana.
  • Layout de cabecera. Este layout horizontal agrupará los controles dibujo de cabecera (izquierda y derecha). Los layouts también tiene propiedad de aplicar márgenes y separación entre controles, para este, todo a 0 para dejar los controles unidos unos a otros.
  • Espaciadores fijos. Para suplir la ausencia de márgenes, necesito espaciadores a la izquierda y derecha del formulario, al lado de los campos y controles del formulario.
  • Layout del pie. Este layout horizontal agrupará los botones del pie de formulario. En este caso como el dibujo de pie es uno solo, podemos dejarlo con márgenes y separación entre controles.

Este es el aspecto del formulario con las pautas que comento:

velneo estilo formulario vmountain

Y este es el aspecto final:

velneo estilo formulario vmountain final


A continuación recopilo (y transcribo directamente) un extracto de la ayuda on-line de Velneo V7 porque a menudo me encuentro buscando en la ayuda cuando me entra la duda: ¿El alfa40 admitía guiones? y así muchas veces a lo largo de mi vida programando…

Velneo cuenta desde siempre con tipos de campo alfabético comprimidos (alfa40, alfa64 y alfa128), es decir, que ocupan menos espacio en disco con la limitación de que no incluyen algún pequeño «subconjunto» de caracteres que especifica a continuación.

Por otro lado, es muy útil utilizar la conversión para crear el índice, así el éste ocupará menos espacio y además para las búsquedas nos puede hacer un favor, porque no diferencia si buscas una palabra con tilde o sin ella, por poner un ejemplo.

Los tipos de campo son:

Alfabéticos:

Hay varios tipos de campos de campos alfabéticos. Los tipos Alfa 128, Alfa 64 y Alfa 40 están optimizados en su uso del espacio en disco. Los tipos Alfa 256, Alfa Latin1 tienen tablas de 256 caracteres estándar y Alfa UTF-16 se corresponde con el estándar Unicode. Para campos que vayan a contener una dirección de correo electrónico o una senda Windows, deberá utilizar un campo Alfa 256, Alfa Latin1 o Alfa UTF-16, pues los Alfa 128, Alfa 64 y Alfa40 no soportan en su tabla de caracteres ni la arroba (@) ni la barra de directorios (\).

Alfa 256: Tipo alfabético estándar que incluye todos los caracteres de la tabla ANSI. Se recomienda usar los tipos Alfa indicados más adelante para optimizar el uso del espacio en disco. El rango máximo del campo es 65535 bytes (65535 caracteres).
Alfa 128: Es un tipo alfanumérico que incluye letras mayúsculas, minúsculas, acentos, signos de puntuación y números. Este tipo de campo es empaquetado y cada 8 caracteres que el usuario introduzca se comprimen en 7 para grabarlos al disco. El rango máximo del campo es 65534 bytes (74896 caracteres).
Alfa 64: Es un tipo alfanumérico que incluye letras mayúsculas, signos de puntuación y números. Este tipo de campo es empaquetado y cada 4 caracteres que el usuario introduzca se comprimen en 3 que serán grabados al disco. El rango máximo del campo es 65532 bytes (87376 caracteres).
Alfa 40: Es un tipo alfanumérico que incluye letras mayúsculas, números, guión y espacio. Este tipo de campo es empaquetado y cada 3 caracteres que el usuario introduzca se comprimen en 2 que serán grabados al disco. El rango máximo del campo es 65534 bytes (98301 caracteres).
Alfa Latin1: Es un tipo alfanumérico que incluye los 256 caracteres correspondientes a Unicode Latin 1 (ISO 8859-1). Se recomienda usar los tipos Alfa indicados anteriormente para optimizar el uso del espacio en disco. El rango máximo del campo es 65535 bytes (65535 caracteres).
Alfa UTF-16: Es un tipo alfanumérico que incluye todos los caracteres correspondientes a la tabla de caracteres Unicode (ISO 10646). Este tipo de campo al comprender toda la tabla Unicode requiere de dos bytes para prepresentar cada caracter. Se recomienda usar los tipos Alfa indicados anteriormente para optimizar el uso del espacio en disco. El rango máximo del campo es 65534 bytes (32767 caracteres)

Numérico:

Usado para datos numéricos. Se mantiene la precisión numérica hasta el quinto decimal. El rango máximo del campo es 6 bytes (Del 0 al 281474976710655, o con signo del -140737488355327 al 140737488355327, con 6 decimales del 0,000000 to 2814749767,10655). De esta configuración se ha de excluir el campo ID que tiene como rango máximo 4 bytes (Del 0 al 4294967295).

Fecha:

Permite introducir fechas con diversos formatos. Por defecto admite el formato de fecha ISO 8601. Otros formatos permitidos son: ddmmaa,dd-mm-aaaa, dd-mmm-aaaa. El carácter de separación puede ser el guión o la barra.

Hora:

Permite introducir horas en formato HH:MM:SS. No almacena milisegundos.

Tiempo:

Permite introducir tiempos que son la unión de una fecha y una hora con el formato DD:MM:AA HH:MM:SS.sss

Booleano:

Es un campo lógico que permite definir el contenido como 1 ó 0 (Sí o No).

Objeto:

Campo con contenido variable que se almacena en un contenedor aparte de los datos, por lo que el tamaño del registro no aumenta con su uso, si no que este se contabiliza en su contenedor. El nombre de este fichero será el mismo de la tabla y con la extensión CND. El fichero de índices del contenedor tiene la extensión CNI. En el fichero de datos lo que se guarda es la dirección donde está el objeto en el contenedor.

Dibujo: Su contenido es un gráfico con cualquier resolución y número de colores. Se admite cualquier formato en la importación pero se almacena con compresión JPG o PNG dependiendo del formato de entrada. El rango máximo del campo es 8 GBytes.
Texto: Su contenido es un texto de longitud variable. Se almacena en bloques de 512 bytes por lo que la unidad mínima de contenido es de ese tamaño. El rango máximo del campo es 8 GBytes.
Texto enriquecido: Su contenido es un documento con formato que permite seleccionar fuentes, estilos, alineación, etc. El formato se define mediante tags. El rango máximo del campo es 8 GBytes.

Fórmula:

Campos virtuales que no ocupan espacio en disco ni modifican la estructura de la base de datos. Se calculan con la expresión de tipo fórmula que define el campo en tiempo real, en cada instante que se hace uso del valor del campo. Al ser un cálculo en memoria y no guardarse en disco, no tiene las limitaciones de los tipos de campo correspondientes. No es posible su uso como componente de índices. El tipo de campo fórmula a utilizar depende del resultado buscado, no de los tipos de parámetros utilizados en el cálculo.

Fórmula Numérica: Fórmula cuyo resultado será un dato numérico.
Fórmula Alfabética: Fórmula cuyo resultado será una cadena alfabética Unicode
Fórmula Fecha: Fórmula cuyo resultado será un dato tipo fecha
Fórmula Tiempo: Fórmula cuyo resultado será un dato tipo tiempo (fecha y hora con milisegundos).
Fórmula Plural: Fórmula cuyo resultado será un dato numérico y que se calcula en base a los registros de un enlace plural. Este tipo de campo recorre todo registros del plural y efectúa la fórmula por cada registro encontrado para determinar el valor de la misma. Debido a esto, no utilice un campo de este tipo cuando prevea que los registros de la tabla van a tener un gran número de históricos, pues se ralentizaría la presentación de datos en pantalla en tiempo de ejecución. Se recomienda el uso de Actualizaciones para resolver la problemática que resuelve la Fórmula Plural.

Fórmula Dinámica: Su contenido es una fórmula que se define en tiempo de ejecución, y por tanto puede ser definida por el usuario final. Se trata de la definición de la fórmula y no del cálculo de su valor efectivo, para el que existen diferentes herramientas, entre ellas obtener su valor a través de otra fórmula o contenido inicial. Hemos de definir la tabla enlazada de la que se alimentará la fórmula. Puede ser la tabla en curso u otra tabla. En tiempo de ejecución dispondremos del Asistente de fórmulas para su definición. El rango máximo del campo es 65535 bytes (65535 caracteres).

Puntero Virtual: Su contenido es virtual ya que se trata de punteros de caracter virtual que no guardan información en disco. Se asigna de forma automática cuando se selecciona un enlace virtual.


En Velneo V7 no tenemos fórmulas dinámicas (por el momento) pero en V6 sí, y son súper útiles. Nosotros las usamos mucho para por ejemplo tablas de configuración, parámetros de la aplicación, entre otros fines.

En las tablas de configuración solemos poner valores por defecto en las fórmulas dinámicas para así agilizar el trabajo a la hora de la instalación etc. pero las funciones de Velneo tienen una particularidad al referirnos a ellas en contenidos iniciales y procesos en campos de tipo fórmula dinámica. Se trata de que no se puede poner en el proceso o contenido inicial la función directamente, sino que va con un código. Y también ese código de la función se muestra cuando se pone el campo fórmula dinámica en una rejilla o al imprimir la fórmula dinámica

Me pasó ayer, y cogí «el toro por los cuernos» y recopilé, de una vez por todas y para siempre (mientras no añadan más funciones en Velneo V6) los códigos que corresponden a las funciones:

Velneo V6x Funciones en Formulas Dinamicas codificacion

Los parámetros de las funciones serían exactamente igual que en la función original, separados por , si corresponde y entre paréntesis.

Un ejemplo de contenido inicial de la fórmula dinámica sería así:

«f025( %CAMPO-CONDICION%,  %CAMPO1%, %CAMPO2%)» + fRepiteCadena( «», 1 )

El fRepiteCadena siempre lo pongo al final porque en caso contrario da error (y ciertamente no me acuerdo cómo lo averigüé)

Espero que pronto podamos tener las fórmulas dinámicas en V7, o algo mejor ;-)


Claro que es posible!

He visto esta entrada en el foro de Velneo V7 y he dicho, esto se merece un post!

Me parece que preguntarse esto es como si cuando salió la primera versión de Velneo, entonces era Velázquez, nos preguntásemos, ¿es posible aprender Velázquez sin conocer algo de…? Bueno, entonces no había nada igual!

Conocer Velneo V6 nos sirve desde el punto de vista conceptual, de aprender ese modo nuevo de pensar, de relacionar tablas, de cambiar el chip con Velneo.

Creo que la competencia más dura con que se encuentra Velneo V7 es con Velneo V6.

Estamos comparándolas todo el tiempo, cuando muchas veces no nos damos cuenta que son herramientas distintas, que han sido diseñadas por el mismo arquitecto, que ha aplicado su filosofía, pero que la ha re-escrito completamente. Creo que si empezamos a desarrollar en Velneo V7 comparándola con V6 lo que sucede es que estaremos limitados por V6, sin aprovechar realmente todo lo que V7 nos ofrece.

En el blog de Velneo V6 hay numerosos artículos que nos introducen a esta filosofía, que nos muestran conceptos básicos en Velneo, pero sobre todo lo que más nos va ayudar es lanzarse con una aplicación, viendo antes los ejemplos que hay de open apps y poco a poco empezar a conocer esta herramienta.

Además, en el canal de youtube de Velneo hay muchos vídeos que nos muestran esa filosofía, nos dan a conocer a su gente, etc.


El objeto multivista lo podemos comparar con el «doble bala» que teníamos con Velneo 6x, pero esta vez tenemos más posibilidades. No es doble, sino que es «n», es infiniiiiiiiiito :-) quiero decir que podemos visualizar tantas posibilidades como queramos o como el diseño de la aplicación y la usabilidad lo permitan.

A continuación expongo una mini-reseña de uso de este objeto, que nos brinda muchas posibilidades y vamos a ver una de ellas, muy básica:

En mi caso el multivista muestra en modo multiobjeto, en primer lugar un arbolado de ubicaciones y a continuación un casillero con los libros en ella.

Multivista Velneo Propiedades

  • Tabla asociada: de la que vamos a mostrar los registros
  • Objeto 1: Objeto de lista que nos mostrará los registros de la tabla anterior. Puede ser cualquier objeto de lista, como: una rejilla, árbol, otro multivista, etc.
  • Proceso sincronizador: proceso de origen ficha de la tabla anterior que hará que se carguen los registros de la vista siguiente. Recordad siempre, origen ficha, porque este proceso se lanzará cuando nos posicionemos en uno de los registros de la tabla del objeto 1.
  • Objeto 2: Objeto de lista que nos mostrará los registros de la tabla que se hayan cargado en el proceso sincronizador anterior.
  • Proceso sincronizador: lo mismo de antes… y así hasta tener tantas vistas como desees…

Por último el multivista lo insertaremos como «control objeto» dentro de un formulario, ya sea este primer formulario con origen alguna tabla o ninguna, da igual.

En el control objeto que lo lanza, llamamos primero a una búsqueda que indicará que lista de registros se mostrará y a continuación al propio multivista.

Y este es el resultado:

Multivista V7 VelneoEl primer objeto es un árbol y el segundo es un casillero. El casillero tiene a su vez un drag & drop.


Drag and Drop

03Sep09

¿Qué es?

El «drag» es una propiedad que podemos asignar a los controles de un formulario, que en vdevelop la tenemos en castellano:

  • «Arrastrable para mover»: no mantiene en la lista original el registro que hemos arrastrado
  • «Arrastrable para copiar»: mantiene en la lista original el registro que hemos arrastrado, con lo cual podemos hacer de nuevo el drag sobre el mismo registro.

propiedad drag - arrastrar

El «drop» es un sub-objeto que tenemos disponible en los objetos de lista, por ejemplo en rejillas y casilleros. Este sub-objeto lo que hace a su vez es una llamada a un proceso determinado.

Casillero con drop

propiedades proceso drop

¿Cómo se hace?

En primer lugar quiero resaltar que es sumamente sencillo realizarlo y en ejecución es muy visual, queda bien y me parece que hace los entornos de las aplicaciones mucho más intuitivos

  1. Definir el proceso de drop. Se deberá indicar en propiedades del proceso la tabla de origen y la tabla de destino. La de origen será la misma del objeto en el que hacemos el «Drag» y la de destino será la del «Drop». Por ejemplo, yo genero desde un casillero de libros, arrastrando desde ahí genero automáticamente el préstam
  2. En el casillero de origen, marcar la propiedad «Arrastrable para…»
  3. En el casillero de destino, crear el sub-objeto «Drop» que llame al proceso generado en el paso 1.
  4. A continuación para que refresque se indica en el formulario el evento con la instrucción para recalcular control.

Y ya está!


Reiniciando…

27Ago09

Después del periodo estival, «reiniciamos»

Comparto a continuación una curiosidad y/o detalle a tener en cuenta para no meter la pata:

Estaba modificando la vbase, la tabla de entidades para personalizarle, añadirle unos booleanos que necesitaba, y … una confusión tuve …

Tengo dos versiones de vbase instaladas en mi server, ¿porqué? … eso me preguntaba yo…

Resulta que tenía la aplicación de Agenda que proporciona velneo y ésta tenía heredada la vbase versión 0.1

Así que ojo al modificar las cajas de datos, teniendo en cuenta esto :-) Lo he reportado como sugerencia, que se vean las versiones de las cajas al heredar.

Del proyecto de biblioteca, sigo con él. He decidido darle una vuelta, lo que me ha reportado bastantes errores (no importa! tenemos un magnífico inspector de errores que nos dice el objeto y el control donde está el error), pero en un par de horas estaban solucionados todos los inconvenientes.

He cambiado algo la estructura de tablas, ahora aprovecho el núcleo que proporciona vBase para las entidades (socios, editoriales, …) y también tengo lo de países y direcciones resuelto ahí (me ahorra muchísimo trabajo el heredar esta caja)

Al cambiar tanto la estructura, herencias nuevas y cambios variados, en el vadmin tenía varias instancias con errores… Lo he resuelto borrando las instancias antiguas y instanciando el proyecto de nuevo, al mismo directorio de datos. Así queda ahora (me refiero sólo a las instancias de Biblioteca)

vadmin

También voy a empezar a aplicar los estilos gráficos. Me decanto por «Velneo Mountain Style«, ya os contaré mi experiencia.


La versión 7.1 de Velneo liberada a principios de Junio incluía numerosas novedades, entre ellas los esquemas de tablas.

A continuación hacemos un repaso de sus propiedades:

  • «Añadir nodo tabla». Permite incluir una tabla nueva de las que tengamos heredadas en la caja. En el nodo de la tabla se puede añadir un icono para dicha tabla. El inconveniente es que no se puede modificar el tamaño del icono sino que lo pone a tamaño completo original del mismo.
  • «Añadir texto». Se pueden tener comentarios sueltos entre las tablas, comentando relaciones entre tablas, etc.
  • «Añadir dibujo». Podemos insertar iconos en el esquema para hacerlo visualmente más atractivo y utilizarlo como documentación de proyecto por ejemplo. Un pequeño inconveniente es que el tamaño del icono no se puede manipular, lo pone del tamaño original que tenga.
  • «Añadir proceso». Permite seleccionar un proceso de lista (no permite seleccionar procesos de ficha) de alguna de las tablas e insertarlo en el esquema, generando una flecha verde entre las tablas de origen y destino del proceso. La flecha es verde por defecto, pero se puede personalizar su color y grosor.
  • «Levantar al frente» y «Llevar al fondo». Si superponemos varias tablas, podemos indicar aquí cuál queremos que vaya en primer plano o no.
  • Tipografías: Cada nodo y cada texto puede tener su tipo de letra y estilo (negrita, cursiva…). Se me ocurre que podemos resaltar las tablas principales del esquema para una mejor lectura del mismo.
  • «Color fuente». Cada nodo puede tener su color de fuente.
  • «Color fondo». Podemos escoger el color de fondo del esquema.
  • Zoom: podemos aplicarlo en el esquema de modo que lo podamos ver más grande o pequeño. Por ejemplo cuando hay un esquema con muchas tablas y necesitamos verlo en una pantalla todo.
  • «Aplicar efectos al imprimir». No tengo claro lo que hace… He probado activando y desactivándola y, aparentemente, no hace nada.
  • «Imprimir». Como su nombre indica, nos saca por impresora el esquema. Si el esquema es muy grande y no cabe en una página, hemos de aplicar zoom para que quepa en una hoja. Esto lo encuentro totalmente lógico porque un esquema en varias hojas, desde mi punto de vista, puede perder su sentido y claridad al leer.
  • «Imprimir a fichero». Genera un fichero con el esquema, se me ocurre por ejemplo para añadirlo a un documento de la aplicación, memoria del proyecto (muy necesaria cuando se va a pedir una subvención por el mismo), etc. El fichero que genera es en formato pdf.

Lo que no encuentro es la propiedad de arrastrando entre tablas poder relacionarlas.
Me explico: en 6x cuando estamos en un esquema y pasamos el ratón por encima de una tabla, se activa el puntero en forma de mano y podemos arrastrar de una tabla a otra, generando un enlace maestro-histórico entre ambas tablas (siempre y cuando sea posible relacionarlas, puesto que no permite enlaces redundantes)

Actualización: El objeto esquema está disponible tanto en el proyecto de datos como en el proyecto de aplicación. Desde el proyecto de datos podremos crear nuevos enlaces entre tablas arrastrando el puntero correspondiente entre las tablas que necesitemos enlazar.

En la imagen se ve la barra de herramientas del esquema en el proyecto de datos:

  1. Asistente de creación de nueva tabla
  2. Puntero normal
  3. Puntero arrastrar esquema
  4. Puntero creación de enlace plural (histórico)
  5. Puntero creación de enlace singular (maestro)

toolbar_esquema_datos

En general, creo que es un objeto que nos trae muchas novedades, muchos detalles nuevos y nos facilita las cosas en el sentido de que podemos aplicar más propiedades visuales, lo que nos ayuda a que se lea mejor y más rápidamente, como es el propósito de todo esquema ;-)

esquema tablas velneo 7.1


En todas las aplicaciones de gestión, son una parte muy importante los informes a emitir de la misma. Si bien algunos preimpresos caen en desuso, pero no lo están del todo, estos informes que deben ser sacados en formularios con la información justo en su casilla correspondiente. ¡Y qué me decís de los que deben salir por matricial, que haberlos, haylos! ¡Más entretenidos que un sudoku!

V7 nos aporta la facilidad de partir objeto texto, aunque realmente en 6x ya lo hacíamos cada uno con nuestros recursos: que si dll, procesos, funciones, etc…

A continuación indico algunos trucos que utilizamos, son de la vieja escuela de 6x, pero yo creo que se podrán aplicar igualmente al desarrollar los informes con V7:

  • Proporción. En los informes que tienen cabecera de página, detalle y pie de página, que los tamaños de las secciones cabecera y pie sean proporcionales al tamaño del detalle. Por ejemplo: 300, 15 y 195 píxels (es sólo un ejemplo de tamaños de secciones). Con esto nos aseguramos que de nos va a salir cuadrado el informe y que aunque tenga muchas páginas, éstas saldrán en su sitio.
  • Controles con altura variable: Parece obvio, pero si tenemos que cuadrar un informe en su casilla, nunca pongamos un control con altura variable, pues éste puede mover los demás controles que tiene debajo.
  • Orden: en los informes que van a salir por matricial, ten los controles ordenados de forma lógica. En los informes no tenemos la ventana donde se ven todos los controles para poder ordenarlos, pero podemos hacerlo si vamos cortando y pegando cada control antes de dar por finalizado el informe, haciéndolo en el orden correspondiente. Había algún modelo concreto de matricial que daba problemas, no recuerdo exactamente cuál. También para las matriciales, tener los campos alineados lo máximo entre ellos en la misma altura hará que vaya más rápido al imprimir.
  • Tipo de letra: si queremos que siempre lleven el mismo número de caracteres cada casilla lo mejor es usar un tipo de letra de ancho fijo, como «Courier New» en la que ocupa el mismo ancho una letra «i» que una «m» lo que nos permite una precisión mayor al imprimir e incluso en el caso de aplicaciones completamente a medida, que la capacidad del campo sea exactamente la que se ajusta a la casilla del informe.
  • Y uno de perogrullo: para no olvidar en el futuro porqué hemos hecho determinada cosa en un informe, etc. yo lo que hago es poner un pequeño control con condición de visible 0 con texto explicando pequeñas cosillas del informe, que son susceptibles de que se me olviden ;-)

informe-preimpreso-matricial