jun 19

Oferta en funciones: 3 x 1

Estamos de oferta señoras y señores, …

vamos, que me las quitan de las manos, …

Ya solo me quedan 3, lleveselas y pague solo una.

Antes de comprar una oferta, deberiamos saber los que compramos, ¿no?

¿Qué es una función?

En la programación tradicional, en los lenguajes de 3 generación, una función es una porción de código que se separa del resto con el fin de abstraer la programación y evitar usar el mismo código de forma repetitiva. Es decir, si tengo que usar el mismo código en diferentes partes de una aplicación, creamos una función y llamamos a esa función cada vez que la necesitemos.

En Velneo V7, como en el resto de herramientas, tenemos 2 tipos de funciones:

  1. Funciones predefinidas, que son las que incluye la propia herramienta para las tareas más básicas:
    • round()
    • len()
    • choose()
    • currentDate()
    • etc…
  2. Funciones definidas por el usuario, que son aquellas que podemos definir nosotros mediante porciones de código o comandos de instrucción (igual que el usado en los procesos)
    • FUN_USER(param1,param2)

Y en este artículo nos centraremos en las funciones definidas por el usuario y debemos tener claras algunas consideraciones:

  • Las funciones hacen uso de los parámetros y podemos definir funciones que tengan hasta un máximo de 10 parámetros, aunque también podemos definir funciones que no necesitan ningún parámetro
  • El código de una función es el mismo que el usado en los procesos, y en algunos casos, seremos nosotros mismos, los que tengamos que decidir si realizamos una determinada tarea mediante una función o un proceso, ¿qué es mejor?
  • La función retorna un único valor, como resultado de ejecutar el código de la misma.

Ahora que ya hemos aclarado para que sirve una función y como debemos usarla, vamos a plantear el problema, o mejor dicho, los problemas que se nos presentan:

  1. Resulta que, con la salida de la versión 7.10 de Velneo V7, y la posibilidad de crear fórmulas y procesos JavaScript, he caido en la cuenta de que me falta algo, ¿dónde estan las funciones JavaScript?, tenemos fórmulas, tenemos procesos, pero no tenemos funciones.
    • El caso, es que despues de comentarlo con soporte, y de llegar a la conclusión de que no hay una solución clara a este problema que parece ser bastante complejo, y no tendrá solución viable a corto plazo, se me ocurre la siguiente solución, en la que afortunadamente, coindidimos con la respuesta de soporte:
    • No podemos crear funciones en JavaScript, pero hay que ser positivo y ver lo que si podemos hacer. Podemos crear un proceso JavaScript y llamar al proceso desde una función. No es la solución ideal, pero ¡es una solución!.
  2. Luego, de esta pequeña charla, cai en la cuenta de que podiamos llevar esta solución un poco mas alla, y de paso, solucionar el 2º problema. ¡No podemos ejecutar funciones en 3º plano!
    • ¿Cómo que no?, si ya hemos visto, que podemos llamar al proceso desde una función, esta misma solución nos vale para ejecutar las funciones en 3º plano. Para esto, solo hay que crear la función, y del mismo modo, llamamos a un proceso mediante el Manejador de objetos y disparamos el proceso en 3º plano. ¡Otro problema solucionado!
  3. Pero no acaba ahi la cosa, ya que uno de los problemas principales, para el cual se requeria el uso de funciones JavaScript, era poder usarlas desde contenidos iniciales en las fómulas de los campos.
    • Asi que, despues de lo dicho anteriormente, ya deberiais saber la solución. ¡Si!, crear una función que llame a un proceso en V7 o JavaScript, eso ahora da igual. Lo que importa es que con esta solución, en realidad, lo que hacemos es conseguir ejecutar procesos en los contenidos iniciales, que por definición, tampoco es posible. Te lo repito: “Si necesitas ejecutar un proceso desde un contenido inicial, ¡ya es posible!”

De esta forma, y con una única solución, estamos resolviendo 3 problemas que se nos pueden presentar con frecuencia.

Si necesitas ayuda para cualquier proyecto, seguro que podremos llegar a algún acuerdo. Aqui estan mis datos de contacto:

http://www.ascsl.com/about/

PDF Printer    Enviar artculo en formato PDF   
comments: 2 »
may 30

Herramientas y servicios asociados

Una buena aplicación no es solo un programa que funciona bien.

Para tener una buena aplicación hay que rodearla de un conjunto de herramientas y servicios para dar valor añadido, porque a fin de cuentas, lo que deseamos conseguir, no es que se hable bien de nuestro programa, lo que deberiamos conseguir es que se hable bien de nuestra empresa y el programa sea solo una de sus estrellas destacadas.

Para ello, si observamos a los mejores, necesitamos:

  • un buen manual, es imprescindible para el aprendizaje de las aplicaciones, y si es posible, complementarlo con videos de aprendizaje
  • una web, organizada y seria, pero no aburrida.
  • un blog, donde poder comunicar las noticias mas destacadas y mantener una información actualizada.
  • una buena base de conocimiento, donde solucionar las dudas mas frecuentes.
  • un foro, donde permitir el intercambio de opiniones entre los usuarios de nuestras aplicaciones.
  • una herramienta de control de bugs e incidencias, para solucionar los problemas conocidos y reportados.
  • una herramienta de soporte, donde recibir las dudas y comunicados de los usuarios.
  • un foro de ideas, tambien nos ayudará a saber directamente cuales son las necesidades mas demandadas por nuestros usuarios.
  • un roadmap, dónde los usuarios puedan estar informados de las próximas novedades, evitando duplicidades con el foro de ideas.
  • y formación y talleres adicionales.

Todo esto, nos da una información directa que debemos saber digerir para usar en nuestro favor y mejorar el producto en base a las decisiones tomadas analizando toda la información recibida.

Pero si sabemos leer los indicadores, hay mucha mas información que tambien podemos aprovechar para mejorar:

  • Aquellas preguntas que se repiten una y otra vez en soporte, nos indican donde debemos mejorar la documentación.
  • Cuando los errores que comenten los usuarios, son reincidentes, debemos tratar de mejorar esa funcionalidad para que no se produzcan o minimizar sus efectos.
  • Las opiniones de los comentarios del blog son buenos indicadores de como se realiza el trabajo, aunque siempre habra alguien que no esté de acuerdo, debemos tenerlos todos en cuenta, y los negativos, mucho más, pues nos ayudaran a mejorar.

Pero, y lo que no se dice, lo que no se pregunta, o lo que no se comenta, ¿qué pasa?

Esta información tambien es importante, porque cuando una funcionalidad de una aplicación, no se comenta o nadie pregunta, puede deberse a 2 motivos fundamentales:

  1. No se usa, y por tanto habria que decidir si realmente interesa mantenerla operativa o seria necesario prescindir de ella.
  2. Funciona, se usa y pasa desapercibida, precisamente gracias a su buen funcionamiento. En este caso, deberiamos tomar buena nota, pues quizá sea un buen argumento de venta de nuestra aplicación.

Ahora, solo nos quedaría tener una buena estrategia de precios, pero eso, no es un tema que debamos tocar hoy, 😉

Create PDF    Enviar artculo en formato PDF   
comments: 2 »
may 2

Mejoras en el alternador de V7

Posted in ideas

Siguiendo con la serie de capitulos dedicados a mejorar la funcionalidad de los objetos de V7, esta vez le toca al alternador:

  1. No es posible usar las señales correspondientes a una lista de registros cuando se usa el Alternador como objeto para ver el resultado, aun cuando dicho alternador usará alguna rejilla para visualizar los datos. Sin embargo, si es posible usar dichas señales en las conexiones de eventos, cuando usamos la rejilla como visor, y despues de definir las señales cambiamos por el alternador (en este caso, las señales son capturadas y totalmente funcionales).
  2. Como ya expliqué en este artículo Nuevo objeto alternador, la potencia del alternador es grande, muy grande y despues de usar este objeto durante todo este tiempo, no me queda más remedio que pedir un objeto similar y con la misma funcionalidad (accesible por el usuario final y programable desde eventos) (Alternador de ficha) que podeis votar en el foro de ideas.
  3. Porque disponer de un “Alternador local”, es decir, poder crear un Alternador y asignarle los objetos directamente desde el evento, al igual que hacemos con las “Cestas locales” que son destruidas al finalizar, y mantenerlo operativo durante la ejecucion del objeto donde se creo, … quiza estoy diciendo una barbaridad 😉
  4. Otra opción para solucionar el “punto 3”, sería la posibilidad de cambiar las propiedades de “Visible” y “Activo”  en cada uno de los objetos del Alternador, permitiendo asi que el cambio de vista del alternador pudiera ser configurable en función del usuario.

No lamento que el artículo sea tan breve, porque en realidad, eso es bueno, ya que el alternador cumple excelentemente su misión y ahora mismo no se me ocurre nada más que aportar para la mejora de este objeto, pero si teneis alguna idea más, dejad el comentario y modificaré el post, si es necesario para reflejar vuestras ideas.

Y como en los post anteriores, si alguna de las funcionalidades descritas ya está en uso, os agradecería me comunicarais la oportuna corrección.

PDF Download    Enviar artculo en formato PDF   
comments: Comentarios desactivados en Mejoras en el alternador de V7
abr 10

Mejoras en los formularios de V7

Posted in ideas

Como continuación al artículo anterior, voy a exponer algunas mejoras que serían muy utiles en los formularios:

Podeis observar que las 2 primeras ideas estan repetidas del articulo anterior, pero las he puesto aqui para tener agrupadas todas estas ideas en un mismo post, ya que todas hacen referencia al objeto formulario.

  1. (Punto 4 del articulo anterior) En un formulario con un control “separador de formularios”, se echa de menos, desde un sub-formulario del separador, poder refrescar una vista de datos incluida en otro sub-formulario de ese mismo separador. En cantidad de ocasiones realizamos cambios en una rejilla o campos de un sub-formulario que obligan a recalcular los datos de una rejilla que esta en otra carpeta de ese mismo separador.
  2. (Punto 8 del articulo anterior) Poder usar las mismas variables locales de un formulario en los sub-formularios de un separador o de un control vista de datos, al menos, cuando hayan sido definidas con el mismo nombre y con el mismo tipo de contenido.
  3. Poder refrescar todos los sub-formularios de un Separador desde un evento del formulario principal. Creo que ahora necesitamos refrescarlos uno a uno y eso impide que podamos refrescar el contenido de aquellos subformularios que se incrustan mendiante puntos de inserción.
  4. Las condiciones de visibilidad de los subformularios solo se verifican en el momento de crear el formulario, pero si una de las condiciones de visibilidad cambia durante la edición del mismo, la pestaña no desaparece o reaparece. Propongo que tengamos la opción de verificar nuevamente las condiciones mediante algun evento o cualquier otro metodo (por ejemplo, el punto 3, podria refrescar todo, incluyendo las condiciones de visibilidad).
  5. Tener una señal, ON-CLOSE que se ejecute al cerrar el formulario y que nos permite ejecutar un evento, independientemente de que se cierre con los botones Aceptar, Cancelar, desde las sentencias de Interfaz, o con la “X” de la ventana del S.O. Un ejemplo de uso de esta señal, nos permitiria eliminar un documento, si al finalizar la edición del formulario, ya hemos creado la cabecera pero no se han introducido lineas.
  6. Ya podemos utilizar un objeto dibujo de cualquier proyecto, como layout dentro de un formulario. Pero poder usar un #CAMPO Objeto Dibujo de la tabla de origen del formulario o de una tabla maestra como Layout, estaría de vicio.

Si alguna de las opciones que he puesto, ya es posible realizarlas, también agradezco que me aviseis, ya que es posible que las haya pasado por alto.

Por pedir que no quede.

En cualquier caso, al margen de que estas peticiones sean o no, tenidas en cuenta en futuras versiones, tengo que felicitar a todo el equipo de Velneo por la gran herramienta que nos estan construyendo, y estas peticiones estan realizadas con el animo de acercarnos un poquito más, a la herramienta perfecta.

PDF Printer    Enviar artculo en formato PDF   
comments: 2 »
mar 31

Mejoras en la funcionalidad de V7

Posted in ideas

La verdad es que he estado bastante ocupado estos dias, trabajando con V7, probando cosas nuevas (aún no he subido en globo y lo otro tampoco :D, no seais mal pensados).

Y cuando le dedicas tiempo, van surgiendo pequeños detalles, que si bien no son demasiado importantes, si que mejorarian enormemente la productividad en tiempo de desarrollo.

Y he tenido que ir tomando nota para no olvidarlos, asi que aqui los dejo para ver si hay suerte y alguno cae en próximas versiones.

  1. Poder ver los valores de una tabla estática, en tiempo de edición de un formulario. En múltiples ocasiones, debemos condicionar la visibilidad o activo de otros controles en función del valor de un campo enlazado a una tabla estática, pero no recordamos los valores que tiene la misma. Esto, que suele ser muy frecuente en la fase de diseño de un formulario, nos obliga a abandonar el proyecto actual, ir al proyecto de datos y comprobar los valores de la tabla estática para luego volver al formulario (la vuelta es mas sencilla con los inspectores). En procesos y eventos también seria muy util poder ver sus valores.
  2. Ver graficamente las tablas estáticas en los esquemas, y las relaciones con el resto de tablas, ayudarian a entender mejor el análisis de la aplicación.
  3. Los items de una tabla estática, siguen sin poder ordenarse, asi que lo dejo aqui como redordatorio.
  4. En un formulario con un control “separador de formularios”, se echa de menos, desde un sub-formulario del separador, poder refrescar una vista de datos incluida en otro sub-formulario de ese mismo separador. En cantidad de ocasiones realizamos cambios en una rejilla o campos de un sub-formulario que obligan a recalcular los datos de una rejilla que esta en otra carpeta de ese mismo separador.
  5. Algunas mejoras en los informes, que tanto se han reclamado. Cómo poder imprimir a varias columnas, y otras que ahora no recuerdo.
  6. En cantidad de ocasiones, realizamos cambios en los contenidos iniciales de los campos, o añadimos nuevos campos a una tabla que ya contiene miles de registros, y esto nos obliga a realizar un proceso que recalcule el contenido de dicho campo. Pues bien, ya no pido que esto lo haga solo, que entiendo que no debe ser fácil, pero si una sentencia en los procesos, que nos permita “Recalcular el contenido inicial de un campo” dentro de un “Recorrer lista lectura/escritura”. La razón: no tener que repetir la fórmula del contenido inicial dentro del proceso, sobre todo para evitar errores, porque si en alguna ocasión, que sucede a menudo, volvemos a modificar el contenido inicial de ese campo, el proceso se queda olvidado, y cuando ejecutamos el proceso de recalculo, el resultado es incorrecto porque olvidamos realizar la misma corrección 2 veces o más. Además, si la formula ya está escrita en el contenido del campo, no veo la necesidad de tener que escribirla de nuevo en el proceso y arriesgarme a ponerla mal. Y aunque se puede copiar/pegar, mejor evitarlo.
  7. En vADMIN, al hacer cambios en una aplicación, estamos obligados a reiniciar todos los proyectos, uno a uno, y seria bueno disponer de una opción para poder reiniciar el “proyecto indicado y todos los proyectos heredados por el”, para no olvidar ninguno. Cuando trabajamos, con vDevelop, es fácil, F5 y listo. Pero cuando instalamos una actualización con vInstallBuilder, tenemos que reiniciar uno a uno los proyectos, y este proceso es lento, es manual, y es sencillo olvidar proyectos sin reiniciar. Edito: Gracias a Giuseppe por corregirme, ya que desde vADMIN, en el apartado de Soluciones, tenemos la opción de reiniciar la solución completa. Y yo que no la habia visto, llevo todo el tiempo, reiniciando las instancias una a una. 😀
  8. Poder usar las mismas variables locales de un formulario en los sub-formularios de un separador o de un control vista de datos, al menos, cuando hayan sido definidas con el mismo nombre y con el mismo tipo de contenido.
  9. Un alternador de ficha (similar al alternador de lista), que nos permitiera cambiar de formulario, tanto en ejecución como en fase de desarrollo en los eventos, y poder incluir dicho alternador en los formularios de Alta, Modificacion y Baja de una Rejilla, o cualquier otro objeto de lista con estas propiedades, nos permitiria controlar mucho mejor lo que el usuario ve en cada momento, e incluso personalizar los formularios en función del usuario que ejecuta la aplicación. Esta última, ya esta en el foro de ideas, asi que votadla.

Como veis, realmente no son cuestiones de vida o muerte, pero si que se echan de menos cuando surge la necesidad, que suele ser bastante a menudo.

Si estás de acuerdo en todas o algunas de ellas, deja un comentario en el blog, aunque sea un simple +1 😉

Si no estas de acuerdo en todo, puedes indicar cuales te parecen buenas ideas y cuales malas, ejemplo: +1 +3 -4 -5 +6 (+ para las buenas y – para las malas ideas). Se agradecera igualmente.

Si se te ocurre alguna sugerencia nueva, también puedes comentarla en este post, para tenerlas todas juntas.

Gracias a todos por ayudar a mejorar V7.

PDF Download    Enviar artculo en formato PDF   
comments: 9 »
dic 16

Personalización de informes

Posted in ideas

Ya que este tema lleva algun tiempo en el foro de ideas, he decidido aportar una pequeña sugerencia que podría resolver el problema temporalmente, al menos, mientras se encuentra una solución mejor y definitiva.

Y antes de exponer la solución voy a poner un ejemplo para que podais entender el planteamiento, incluso antes de leerlo.

Tal y como se indica en el mismo hilo de la idea en el foro:

Personalización de proyectos

Se hace ver que la mejor solucion es un proyecto, que herede al resto de proyectos con los informes personalizados, y esta solución es buena, salvo por un detalle, “deberiamos incluir el AUTOEXEC en este proyecto para  el usuario final con sus informes personalizados.”

  • La idea es conseguir que solo el proyecto de personalizacion de informes sea editable por el usuario final, para mantener la coherencia en todos demas proyectos y evitar que se puedan tocar las propiedades de otros objetos por personas que no tienen permiso para ello.
  • Otra idea, es que todos los proyectos de la solución sean comunes para muchos clientes y unicamente el proyecto personalizable sea único para cada uno de ellos y herede al resto.

Partiendo de estas premisas, considero que surge un problema, y es que el usuario puede crear y/o modificar los informes de este proyecto, pero, ¿como incluimos los informes en los objetos que estan localizados en proyectos heredados?.

El caso es que ya tenemos resuelto este tema en otros aspectos, como las Acciones y los Formularios, mediante la “Herencia inversa”. Con esta técnica, podemos incluir una Acción creada en un proyecto superior, y despues, incluirla en un menú situado en un proyecto heredado. Y lo mismo podriamos hacer con las carpetas de un formulario.

Hasta aqui me seguis, … seguro que ya habeis pillado la idea 😉

Pero de todas formas la voy a explicar con mas detalle, porque de lo que se trata, ya no es de solucionar el personalizador de informes, sino de abstraer una solución más amplia:

Asi pues, he llegado a la conclusión, de que, necesitamos un Objeto de lista, similar a la Acción, con la capacidad de poder configurarlo como “Punto de inserción”, y he dicho “Objeto de lista“, no “Informe“.

¿Porque?,

Sencillamente, porque si creamos un Punto de inserción de lista, y podemos incluir este objeto en un Alternador, tendremos resuelto el problema, no solo para los Informes, sino para Rejillas, ListViews, ComboViews, Casilleros y cualquier otro objeto de lista que pudieramos definir en el proyecto superior.

De esta forma, si podemos permitir que el usuario final, pueda modificar cualquier objeto creado por el mismo, y podemos de paso, proteger el nucleo de nuestras aplicaciones para asegurarnos de que lo importante, no se pueda tocar por manos inexpertas.

ahi queda eso, 😉

PDF Printer    Enviar artculo en formato PDF   
comments: Comentarios desactivados en Personalización de informes
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 Creator    Enviar artculo en formato PDF   
comments: Comentarios desactivados en ¿Un paginador de rejillas? ¡NO!
ene 19

Acceso a bases de datos externas existentes

Posted in foro, ideas, MySQL

En este hilo del foro, se comentan algunas cosas interesantes, y me gustaria aclarar y dar mi punto de vista

Crear aplicaciones sobre una base de datos existente

Velneo, en su modelo de “Base de Datos Real”, algo que la diferencia de las bases de datos relacionales como MySQL, PostgreSQL, SQLite, Oracle, MS-SQL, tiene muchas ventajas y algunos inconvenientes.

No voy a centrarme en esta ocasión en verificar cual de estas bases de datos obtiene mejores rendimientos, ya que no es el tema que se debate en esta ocasión.

El tema en cuestión, es que cada uno debe valorar las ventajas que les reporta una base de datos y los inconvenientes, y despues, agitarlo todo en una cocktelera, y tomar una decisión al respecto.

Desde que conoci Velazquez Visual, ahora Velneo, una de las cosas que mas me ha gustado, y de las que uno menos suele valorar con el paso del tiempo (quizá por la costumbre), ha sido la refactorización, y la facilidad con que podia realizar cualquier cambio en la estructura de la base de datos, sin tener que preocuparme de nada en absoluto.

Cuando llegue a Velazquez Visual (alla por el 97/98), venia precisamente de SQL (Multibase – Transtools), y aunque la base de datos funcionaba estupendamente en SQL, la empresa dejó de mantener las actualizaciones periodicas que realizaban (semestralmente). Durante casi 3 años estuve, probando otras herramientas, y por fin, en una revista especializada, vi el anuncio de Velazquez Visual, y decidi pedir una demo.

Desde que la instale, me sorprendio la facilidad con que se realizaban las actualizaciones en los datos, y la cantidad de tiempo que me ahorraba en mis actualizaciones a los clientes. Desde entonces, han ido apareciendo muchas novedades, algunas muy interesantes y llega un momento en que incluso podria haber olvidado toda la comodidad que habia ganado.

Cuando Velazquez Visual parecia que iba a desaparecer, volvi a buscar otras herramientas, y de nuevo el mismo problema, despues de evaluar varias herramientas, decidi que no queria perder la comodidad que habia tenido todos estos años.

La presentación de la V7 fue una luz en el camino, y decidi que habia que seguir esa luz.

Si bien es verdad que me he quejado mucho, siempre lo he echo para que Velneo respondiera, con la unica intención de mejorar la herramienta. Y parece que ese cambio se está produciendo, quizá mas lento de lo que todos deseariamos, pero veo como las cosas cambian, para mejor, y eso me gusta.

Volviendo a lo que nos pedia “Cjribera” en el foro, es cierto que todo el esfuerdo de Velneo esta pensado en su propia base de datos, y aunque el acceso a bases de datos externas, es posible, siempre se echa algo en falta.

Para estos casos, yo he decidido que hay que protestar y pedir y aportar ideas y/o soluciones, porque si no pido lo que necesito, si no me quejo por lo que no me gusta, ¿como van a saber en Velneo mis problemas?

Ahora despues de analizar estas peticiones, estoy pensando que me parecen muy interesantes, pero he querido llegar un poco mas alla, y he pensado, ¿como podriamos tener acceso a otras bases de datos? o dicho ¿como podriamos tener objetos de V7 asignados a tablas de bases de datos externas?

Y he tenido un pequeño “flash”, y he visto una posible solución al problema para poder usar bases de datos externas manteniendo lo bueno de Velneo, la refactorización.

Primero pense, asociar cada uno de los objetos a una “tabla SQL“, formularios, rejillas, busquedas, tubos, procesos, es complicado, cada vez que se produzca un cambio en la base de datos externa, los objetos dejarian de estar enlazados y se producirian cantidad de errores.

Entonces, como solucioarlo …   ¡¡ thinking !!

… y unos minutos despues, una idea,

Podriamos crear “Tablas lógicas“, con estructura similar a las tablas de la base de datos SQL (basicamente copias de las tablas), y asi podriamos asociar los objetos a estas tablas lógicas, manteniendo toda la operatividad que tenemos ahora.

Esta idea, permitiria mantener la refactorizacion entre los objetos de Velneo y las “tablas lógicas”. Cierto es , que si se produce un cambio en la estructura de datos de SQL, deberiamos corregirlo tambien en la “tabla lógica” para que los objetos se adaptasen correctamente, pero en cualquier caso, solo habria que corregir la estructura de campos de la tabla, evitandonos realizar correcciones en todos los objetos.

Luego segui soñando, y por soñar, que no quede…

Ya que tenemos esta “tabla lógica“, porque no tener toda la funcionalidad completa, ¿que quiero decir con esto?,

Pues que, ya puestos, y con las tablas sincronizadas, entre SQL y Velneo, realizar un alta en la “tabla lógica“, o una modificación o una baja, porque no mantener actualizada la tabla SQL, diretamente, ¿no es eso lo que hace ODBC?

Pero en este caso, realizando altas, modificaciones, bajas, o búsquedas directamente con sentencias de Velneo sobre las “tablas lógicas“.

Luego de soñar todo, viene un pajarito y me dice ¿porque te complicas tanto la vida?, todo esto puede ser mas sencillo aún. ¿Como?, y el pajarito me respondio:

A la definición de tablas actual, bastaria con añadir una propiedad “Conector”, que nos permitiera indicar a que base de datos vamos a realizar la conexión: Velneo V7 (interna), a MySQL, a PostgreSQL, a Oracle, y porque no a tablas de V6 con Aplicaciones de V7, etc.

Y de paso, una propiedad más , para establecer los datos de conexión a la base de datos. Y sobre todo, poder cambiar estos datos de conexion en ejecución para poder tener varias instalaciones con la misma estructura de base de datos.

Y ahora me direis, “los pajaritos no hablan”, pero como esto era un sueño, y en los sueños todo es posible. Además, este es mi sueño y yo decido quién habla y quién no, 😀 😀 😀

Luego me despierto y pienso que ha sido un sueño bonito, y que si lo cuento, es posible que se haga realidad. 😉

Aqui podeis votar la idea:

Desarrollar directamente sobre bases de datos existentes

P.D.:

Y porque el nombre de “Tabla lógica“, pues sencillamente, porque su funcionamiento seria similar al de las “Impresoras lógicas“, y de esta forma, todos los objetos de V7 quedan asignados a un origen, y ya solo nos queda asociar la tabla lógica a la tabla SQL, de la misma forma que asociamos una impresora lógica a una impresora real instalada en el sistema.

PDF Download    Enviar artculo en formato PDF   
comments: 12 »
ene 17

Algunas ideas para el futuro ¿v7.7 o v7.8?

Posted in ideas

Siguiendo con una serie de articulos en el que se aportan ideas para mejorar la herramienta, voy a indicar en este “post”, algunas más para que el futuro sea prometedor.

Enlace al post de ideas anterior: Mas sugerencias para la 7.6

En este caso, todas están intimamente relacionadas, y todas persiguen un mismo proposito, mayor apertura a los estandares y mejor integración entre Velneo V7 y otras herramientas.

Como algunos ya saben, este fin de semana, hemos realizado algunas pruebas para integrar V7 y Android, el resultado ha sido todo un exito desde las primeras pruebas realizadas. Pero para poder seguir avanzando, necesitamos mejorar la comunicacion entre ambos, y las sugerencias que aqui se realizan, permitirán que los experimentos realizados sean mucho mas eficientes y nos permitan avanzar mas rápido si cabe.

  1. Empecemos abriendo boca con algo sencillo, ya solicitado en alguna ocasión, “Ampliar las sentencias de proceso para el acceso a la API de datos de Velneo V7”, incluyendo algunas nuevas sentencias como:
    • APIVEL: Get nombre de tabla por identificador
    • APIVEL: Get tabla por número (para poder ver todas las tablas de un proyecto)
    • APIVEL: Get nombre de indice por identificador
    • APIVEL: Get indice por número (para poder ver todos los indices de una tabla)
    • APIVEL: Get nombre de proyecto por identificador
    • APIVEL: Get proyecto por número (para poder ver todos los proyectos de una solución)
  2. Poder disponer de funciones nativas para parsear y también para generar XML (y/o JSON) seria un avance muy interesante. Si ademas, se permitieran funcionalidades tales como las permitidas en la libreria “SimpleXML” de PHP para “XPath”. Eso seria una bomba.
  3. Ya disponemos de la posibilidad de ejecutar scripts de JavaScript (ECMAScript), VBscript, y también de Python. Pero considero, que hoy por hoy, de cara a la web, permitir Scripts de PHP seria todo un acierto, entre otras cosas, porque tambien es multiplataforma, porque hay “utilidades” y “aplicaciones” para aburrir, y sobre todo, porque romperia muchas barreras de cara al exterior.
  4. Si además, consideramos que, ante la falta del punto 2, “acceso nativo a XML”, mediante el punto 3 “ejecutar scripts de PHP” tambien tenemos solucionado en parte ese problema, hay poco mas que decir.

Para aquellos que aún tienen dudas de la potencia de XPath , aqui teneis un Tutorial de XPath, y aqui os dejo algunos Ejemplos, para que podais examinar toda su potencia.

Como ya sabemos, mañana será publica la nueva versión 7.6 y va a ser un poco precipitado que todas estas sugerencias sean incluidas en dicha versión, pero seria muy de agradecer que sean tenidas en cuenta para las próximas versiones.

De momento, creo que ya es suficiente, que la neurona ya empieza a echar humo 😀 .

Para caminar en la oscuridad de nuestras propias limitaciones, no hay nada mejor que dejarse guiar por un buen lazarillo. 😉

PDF Printer    Enviar artculo en formato PDF   
comments: 8 »
ene 6

¿Critica o solución?

Posted in ideas, OpenApps

Hoy me he mirado al espejo, y he dicho, siempre criticando a los demas, porque no te criticas a ti mismo alguna vez, y luego he pensado que no, que para eso ya estan los demas, 😀 😀 😀

Y mejor aún, en vez de criticar, porque no aportamos soluciones.

Ya esta bien de criticar y criticar, aportemos soluciones, y de vez en cuando es lo que intento.

Aprovechando que ya se ha hecho publico el II concurso de Open Apps, y que en más de una ocasión he criticado la poca eficacia del Foro de ideas (aunque ha mejorado considerablemente en algunos aspectos), he decidido que, tomando mi propia critica como punto de partida, que mejor que aportar la solución al problema tal y como yo mismo habia planteado.

Asi pues, he decidido preparar una Open App destinada a participar en el II concurso, no con la finalidad de obtener el premio, sino con la finalidad de que el proyecto sea usado por la comunidad y sirva realmente para un fin:

Permitir que todos, seamos subscriptores o no, podamos tener ideas y aportarlas, independientemente de que podamos asignar nuestros votos o no a dichas ideas, ya que ese derecho pertenece a los que pagan, subscriptores de niveles 2 en adelante.

Como ya podeis imaginar, la Open App se trada de un Foro de ideas realizado con Velneo V7, para los usuarios del Foro y de Velneo V7.

Seguramente, parecera una idea descabellada, pero …

Create PDF    Enviar artculo en formato PDF   
comments: 3 »