sep 29

Variables de tipo Array en 3D

Posted in ideas, utilidades

Como os dije hace poco tiempo, ese mismo dia que iniciamos la gran comilona, :D , es posible usar variables de tipo Array en 3D, y hoy vamos a desvelar como.

Para empezar dire que hay 2 metodos que se me ocurren ahora mismo, pero eso no significa que sean los unicos, asi que os animo a comentar si teneis nuevas ideas:

  1. Como he dicho se me ocurren 2 formas, y esta primera es la mas sencilla. Para ponerla en practica solo necesitas buscar unas gafas 3D de las que usaste para ver la peli de Avatar, y veras como tu Array empieza a salir de la pantalla como si te fuera a comer, ;)
  2. Y la segunda, es algo mas complicado, pero no te comera. Para este segundo metodo, necesitas unicamente una “Tabla”, si tan sencillo como eso, ahora te lo explico con mas detalle.

Vamos a crear una tabla, y unicamente necesitamos 4 campos:

  • #DIM_1 , este campo debe ser numerico y se corresponde con el identificador que usaremos para la primera dimension del Array
  • #DIM_2 , este campo debe ser numerico y se corresponde con el identificador que usaremos para la segunda dimension del Array
  • #DIM_3 , este campo debe ser numerico y se corresponde con el identificador que usaremos para la tercera dimension del Array
  • #CONTENIDO, es un campo alfabetico o numerico, dependiendo de cual sea el contenido que almacenaremos en el Array

Ya tenemos la tabla, ahora crearemos 3 indices, uno para cada uno de los campos #DIM_? y esto nos facilitara la labor de busqueda de valores en el array.

De esta forma, con una busqueda compleja, que usa los 3 indices podemos buscar cualquier valor, del array y en cualquiera de las dimensiones.

Para crear el array, solo necesitamos un proceso con 3 bucles anidados que permiten crear todos los valores,

¿Crees que es posible viajar en el tiempo?

Pues si eres de los que creen, estas de suerte, toma nota:

Crea un nuevo campo #DIM_4 en la tabla, crea un nuevo indice para ese campo, modifica la busqueda para incluir el nuevo indice en ella, y modifica los procesos para crear el array anidando un 4 bucle, y realiza estos cambios en todos los demas objetos que sean necesarios, y veras como el milagro se hace realidad y entras en la 4ª Dimension :D (el tiempo)

No se si es lo que esperabas, pero es una solucion a un problema concreto.

Quiza esperabas que de verdad, los Arrays podian ser en 3D, pero piensalo bien, una tabla en memoria definida con esta estructura y un Array “Local”, en que se diferencian. Y si necesitas que el Array sea “Global” o “Publico”, pues solo tienes que hacerlo en una Tabla con persistencia en disco.

Este truco es valido para V7 y tambien para su hermana (v6.x) ;)

Si estas decepcionado, lo siento, … para hacer milagros me estoy entrenando.

PDF Download    Enviar artículo en formato PDF   
comments: 6 »
ago 12

Informes desde varias tablas

Posted in HTML, ideas, utilidades

Muchas veces se ha reclamado a Velneo la posibilidad de generar informes desde multiples tablas y en V7, parecia que seria posible, pero de momento, toca esperar.

¿o no?

Y como en V6, la respuesta, siempre fue la misma, hay 2 soluciones posibles (o quiza alguna mas, pero ahora solo recuerdo 2)

1. Una de las opciones mas usadas para solucionar este problema es crear una tabla temporal, y un proceso que se encarga de generar los registros  en esta tabla, p.e. mediante tubos,

Ejem. Queremos un listado de albaranes y facturas de clientes, tenemos 2 tablas de origen: Albaranes y Facturas y una tabla de destino: Tabla temporal para el informe. Creamos 2 tubos, cada uno con origen en Albaranes y Facturas y como destino la Tabla del informe. Procesamos los registros y al finalizar ejecutamos el informe desde la tabla de destino.

Este caso es muy sencillo, si pensamos que la tabla de Albaranes y la de Facturas tienen una estructura muy parecida y los campos del informe podrian organizarse muy facilmente.

Pero que pasa si las tablas que queremos listar tienen estructuras diferentes

2. En este caso, lo mas practico, seria utilizar Html, y crear los procesos para generar el codigo HTML correspodiente al informe. Da igual la estructura de las tablas a imprimir, ya que con este metodo, podemos generar distintas estructuras dentro del mismo informe, ¿como?, pues basicamente usando las estructuras del propio HTML como TABLE para crear la estructura apropiada para cada seccion del informe, Asi podemos crear tantas tablas como sea necesario, cada una para una parte del informe y eso si, todas juntas dentro del mismo HTML.

Logicamente, para hacer esto, necesitamos algunos conocimientos del lenguaje por excelencia en la web.

Y visto el resultado que podemos obtener, los informes en Html, pueden resultar un poco mas laboriosos, pero el resultado es excelente.

Y si a esto le aplicamos una hoja de estilo CSS agradable y sencilla, los informes pueden ser “coser y cantar”, que se dice.

PDF Creator    Enviar artículo en formato PDF   
comments: 0 »
ago 3

Impresion de etiquetas en V7

Posted in foro, ideas, utilidades, v7

Como en el ejercicio anterior, voy a dar una solución al problema planteado por Juanjoinfo.jjsoft“, que al igual que en el log del sistema, creo que tiene una solución muy sencilla.

Planteamiento del problema:

¡Necesitamos imprimir etiquetas en varias columnas en un informe!

Problemas técnicos:

Actualmente, en la version 7.4.1 no esta disponible la propidedad para modificar el número de columnas de la sección detalle de un informe.

Solución:

Crear una tabla temporal para la impresión de etiquetas, esta tabla debe tener varios campos para almacenar los datos de cada columna: #COLUMNA1, #COLUMNA2, #COLUMNA3, #COLUMNA4, y asi tantas como queramos.

Ahora creamos el informe, normalmente, eso si, ajustando cada campo en la posicion correcta para la impresión de cada columna de datos de la etiqueta.

Y para finalizar, solo nos queda una cosa por hacer:

Crear el proceso que guarda los datos de cada ficha en el campo #COLUMNAx correspondiente, y ejecutar el informe.

Como ya dije en el articulo anterior, hay 2 opciones:

  1. esperamos a que Velneo lo solucione
  2. ponemos los medios para evitar el problema

Este calor no debe ser muy bueno para las neuronas, ;)

Con esto no quiero excusar a Velneo, por algo que deberia funcionar, pero la solución es sencilla y sigo creyendo que hay otros problemas mas importantes por resolver.

Create PDF    Enviar artículo en formato PDF   
comments: 0 »
jul 31

Log del sistema en V7

Posted in foro, ideas, utilidades, v7

Esta vez, creo que para estos dias de calor, de playa, de descanso, de aire acondicionado en la oficina, da igual … realmente las condiciones de cada uno, pero como seguro que teneis mono de V7, voy a proponer un pequeño ejercicio, que algunos han reclamado deberia venir “de serie” dentro de la propia herramienta.

Y creo que no solo no es necesario que venga de serie, sino que debemos crearlo nosotros mismos y asi “customizarlo” según las necesidades de cada uno.

Hacerlo es tan sencillo que en nuestros proyectos esta incorporado “de serie” y para realizarlo solo es necesario, lo siguiente:

  1. En nuestro proyecto de datos, creamos una tabla con los campos que vamos a guardar. Para este sencillo ejemplo, bastaria con crear campos para el #ID, #NAME, #USUARIO, #FCH y #HOR. Pero podeis añadir algún campo más si lo creeis necesario.
  2. Una vez creada la tabla, en este mismo proyecto de datos, necesitamos una función que realice una operación muy simple: crear un registro en la tabla de datos, y como parametros a la función, bastaria con pasarle un TEXTO y el USUARIO, que utilizariamos para crear el registro, por supuesto.
  3. Crea los objetos necearios para realizar consultas y visualizar los datos de esta tabla: busquedas, rejillas, informes, menús, etc.
  4. Ahora solo quedan una cosa por hacer, pero es la mas importante: desde cualquier parte que desees controlar cualquier operacion del usuario, un evento de tabla (alta, modificacion o baja), desde un proceso, desde un evento de formulario o rejilla, solo tienes que llamar a la función creada y pasarle los parametros TEXTO y USUARIO.

El ultimo punto, requiere trabajo, pues hay que ejecutar la función desde cualquier operación que se realice, pero eso también depende de la complejidad del proyecto.

Después de ver lo sencillo que resulta el ejercicio, quien no tenga LOG es porque no quiera, te atreves a realizar el ejercicio o prefieres esperar a que Velneo lo solucione.

Por mi parte creo que Velneo debe dedicar su tiempo a solucionar problemas reales, que no podamos solucionar nosotros mismos.

PDF Download    Enviar artículo en formato PDF   
comments: 3 »
jul 2

Convertir importes a texto

Para el esquema de nuestra gestión, de la cual exponiamos el esquema en el articulo anterior: Analisis de una aplicación completa, hemos visto que era necesario disponer de una funcion muy interesante, pero que de la cual no disponemos en la versión actual v7.4.

Asi pues, me planteo si debo desarrollar mi propia función para este proposito o debo buscar algun recurso que realice dicha tarea, y a pesar de que la segunda opción es muy atractiva ya que me libera de un tiempo del que a veces no se dispone, he decidido que crear una función propia y ademas hacerlo en Velneo v7, puede ser un ejercicio práctico que merezca la pena.

Funcion para convertir importes a texto

Convertir un importe a texto

Aunque seguramente no es la mejor decisión, ya que disponemos de otras formas de resolver el problema, me he puesto manos a la obra y aqui esta el resultado del ejercicio.

El código adjunto corresponde a la función definida para convertir cualquier numero a su valor en texto, y nos será muy útil para imprimir el valor numerico del importe de un cheque, por ejemplo.

Espero que os sea de utilidad.

PDF Printer    Enviar artículo en formato PDF   
comments: 6 »