dic
16
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,
may
11
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:
- 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.
- 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/
ene
19
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.
ene
17
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, neces itamos 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.
- 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)
- 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.
- 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.
- 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.
ene
6
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 …
dic
20
Nuestro amigo sat.sbinario plantea el siguiente problema en el foro de V7
Preocupación con el rendimiento con número de registros elevado y optimización
en el que expone lo siguiente:
Hola a todos:
La situación es esta. Tabla con 40 campos (2 de ellos singular de plural por Ãndice), unos 10 Ãndices y 180000 registros.
He notado que el rendimiento de la aplicación cuando se trabaja con esta tabla decae notablemente. Por ejemplo, una rejilla que muestra todos los registros (resultado de una búsqueda), “se ve” en pantalla mientras la carga cómo va refrescando los datos, en especial los resueltos a través de los punteros singular de plural. Además cuando utilizas algún localizador asociado a la tabla, tienes tiempos de espera notables, que incluso provocan la rotura del vClient si no eres suficientemente paciente.
Esto nunca me habÃa pasado en v6, asà que lanzo varias preguntas.
¿Se debe a los punteros singular de plural? ¿A los componentes visuales? ¿Qué aspectos intervienen en estos tiempos de espera? ¿Optimización? ¿Alguna experiencia con número de registros elevados?
Un saludo y gracias.
Y despues de varias respuestas en el mismo hilo del foro se llega a la conclusion de que el problema esta en los “Punteros singular de plural”. Y la verdad, considero que es un problema muy puntual, para casos especiales.
Como ya sabeis, yo suelo protestar mucho donde otros no protestan, pero como me gusta llevar la contraria a todos, , donde los demas se quejan, yo busco soluciones, asi que analicemos el planteamiento y veremos la solución:
Planteamiento:
- La tabla tiene “muchos campos”
- La tabla tiene varios “punteros singular de plural por indice”
- La tabla tiene 180000 registros, pero podria tener más.
Problema:
Ya hemos identificado que el problema son los “punteros singular de plural por indice”
Solución:
A la vista de estos parametros tenemos varias soluciones posibles:
- El problema son los “Punteros” pues una solución sencilla es “Quitar los punteros”,
, creo que es la más fácil, la mas sencilla de implementar y la que mejor soluciona el problema. Ahhhhhhhhh, vale, ¡que no se puede hacer eso!, , pues vamos a buscar otra solución.
- En el foro se aporta una solución que también es valida, dejar los punteros en la tabla, pero quitarlos de la rejilla. Es una buena solución, pero que pasa si necesito mostrar columnas a través de los punteros y no puedo eliminarlos, esta solución tampoco es valida.
- Olvidemos el problema principal, que parecen ser los “Punteros” y centremonos en el resto de parámetros de la ecuación. Haber, para que necesito mostrar 180000 registros, acaso tengo que memorizarlos,
, ¿necesito verlos todos? si falta uno, o faltan 1000 registros, ¿te vas a dar cuenta?. Pues ahi tienes la solución, prepara un paginador y muestra los registros de 100 en 100 o de 5000 en 5000 y veras como la velocidad aumenta considerablemente. Ademas, antes de mostrar cantidades indecentes de información, deberiamos pensar todos en el ahorro economico (si, economico), porque vamos a utilizar las aplicaciones con moviles, y las compañias van a cobrar por volumenes de transmisión de datos, y de esta forma, además, matamos 2 pajaros de un tiro (ahorramos dinero a nuestros clientes, beneficiandoles a ellos, y reducimos su factura de consumo telefónico, perjudicando al operador de telefonia).
Piensa en verde, porque ahorrar es sano, sobre todo para el bolsillo, … y en estos tiempos que corren, más.
Y ahora me direis algunos, … ¿y como se hace un paginador en V7? … vale, vale, lo preparo y otro dia os lo cuento.
dic
17
Agradecemos todas aquellas peticiones que nos sirven para mejorar el servicio que intentamos prestar a la comunidad, y las tenemos todas en cuenta, y dicho esto, comunicampos algunos cambios que hemos efectuado en el blog con la unica intención de facilitar las siguientes tareas:
- Al final de cada articulo y justo antes de los comentarios, hemos instalado nuevas opciones para facilitar la descarga de los articulos en PDF y el envio de los mismoa a una cuenta de eMail. A partir de ahora, podras guardar en tu equipo los articulos que sean de tú interés para poder leerlos cuando no tengas conexión.
- También y para aquellos que nos solicitan la lectura del blog desde el móvil (si que estais pillados,
), hemos activado un nuevo servicio precisamente para facilitar la lectura desde el iPhone, pero manteniendo nuestro estilo actual para aquellos que prefieren leernos desde su escritorio tradicional.
Otras peticiones, como el uso de etiquetas, se estan valorando pero creo que, más interesante que el propio uso de etiquetas para los articulos es el propio buscador, y es que, con el buscador, puedes localizar cualquier articulo publicado y por cualquiera de las palabras que aparecen en el texto del articulo.
De todas formas podeis dejar vuestras opiniones, pero personalmente no suelo usar las “nubes de etiquetas”, porque simplemente, me cuesta mas encontrar la palabra que busco entre todas las etiquetas, que escribir las palabras en el buscador. Ademas eso nos limita a que mediante la nube de etiquetas, solo encontrareis el articulo deseado si he realizado el etiquetado adecuadamente, lo que obliga a hacer uso de un excesivo numero de palabras para etiquetar y de elegir correctamente las palabras. Lo dicho, complicado tanto para vosotros como para mi.
Mi voto particular es por el buscador pero si lo considerais útil, usare las etiquetas también.
Y sobre todo, muy agradecido, porque este interes mostrado por mejorar este blog, solo puede significar una cosa, que os gusta leerme, aunque no siempre os guste lo que digo, y eso, a mi tambien me gusta, asi que, todos contentos.
dic
16
Uno de los problemas en el artÃculo anterior, que diferencia también a V6 y V7 es el paso de parametros a las funciones, en V6 no hay limite (aparentemente), mientras en V7 existe un limite de 10 parametros como máximo.
En realidad, ¿para que estan los limites?, ¿para que estan los obstaculos?, … ¡para superarlos!
Los limites están porque alguien, consciente o inconscientemente quiere impedirnos que esos limites sean superados, en este caso, se debe simplemente, a que el departamente de desarrollo ha considerado que 10 parametros era más que suficiente para poder ejecutar cualquier operación con este objeto.
Pero hay excepciones, y en esos casos, en que nos encontramos con un obstaculo, y un muro nos impide seguir nuestro camino, tenemos varias opciones:
- sentarnos y esperar a que el muro sea derribado
- acelerar e intentar saltarlo, chocando repetidamente hasta cansarnos
- intentar rodearlo, aunque ello nos suponga un esceso de tiempo y de esfuerzo
o con un poquito de imaginación, y un poquito de esfuerzo también, pero sin excederse,
- abrir una puerta que nos permita cruzar al otro lado
Y para solucionar el probema de la limitación de parametros en las funciones, hemos abierto esa puerta:
Para esto, solo necesitamos pasar 1 o varios parametros en la llamada a la función, y en cada parametro podemos encadenar tantos valores como sea necesario, usando un separador “;”, por ejemplo.
Dentro de la función, como ya habeis imaginado vosotros, solo necesitaremos usar la funcion del sistema StringSection para volver a separar los valores de cada parametro recibido, y procesarlos como sea necesario.
La solución es sencilla, y no solo permite pasar algunos parametros más a la función, sino que elimina completamente la barrera.
Soluciones como esta, las estamos inventando a diario, pero es dificil imaginar una solución y mucho menos cuando aún no se ha presentado el problema.
….
Uhmmmmmmm
….
y ya puestos, si hemos abierto una puerta para pasar al otro lado, me pregunto:
¿porque no puedo utilizar la misma puerta para volver?
y la respuesta es ¡SI!, la puerta se abre en las dos direcciones,
por tanto, tambien puedo realizar la misma operacion para retornar varios resultados de una misma función, encadenando los valores antes de retornar el resultado y volviendolos a separar en el proceso o evento que recibe el resultado de la función.
Yo, he abierto la puerta, pero si alguien tiene alguna idea para que la puerta sea automatica y se abra sola ante nuestra simple presencia, eso siempre es de agradecer.
dic
13
Nuestro amigo Miguel nos propone una solución al uso de variables en memoria, y dice textualmente:
Pues bien despues de volverme loco por la lentitud de una aplicacion que en local me va de vicio pero en la nube no, resulta que parte del problema era la modificacion de variables globales em “memoria” tarda un huev… en modificarlas no entiendo el porque pero bueno. El hecho es que si la variable se va a mover poco pues la modificas y ya esta, pero si la vas a mover mucho y estas en la nube creas una tabla en memoria hay te creas unos campos para variable numerica otro alfabetica, booleana etc… dos funciones una para escribir en un reg N el valor y otra para leer el valor y en vez de modif variables grabas y lees la tabla es como 5 veces mas rápido que modif variable y se nota un huev….
Este es el hilo oficial:
¿Variable global en memoria o tabla en memoria?
Y despues de leer este hilo del foro, empece a pensar en publicar un pequeño articulo sobre este tema, sobre la realización de un ejemplo tal y como Miguel, el autor de este hilo, nos propone el uso de una tabla para almacenar las variables globales en memoria para mejorar el rendimiento de este tipo de variables.
Tal y como el propone, el ejemplo es sencillo de resolver. Solo necesitamos:
- Una tabla “en memoria”, con los campos para almacenar los identificadores de las variables y sus valores
- Una función para guardar y modificar los valores de esas “variables”
- Una función para leer el contenido de las “variables”
Ya esta, con esto, tan sencillo y básico, podemos mejorar el rendimiento del uso de variables en memoria y conseguir que sean hasta 5 veces mas rápidas (y vamos a creer lo que nos dice, ya que en el momento de escribir este articulo aún no he podido realizar pruebas para poder verificar dicha afirmación).
Pero, tras empezar a escribir el articulo, me rondaba algo por la cabeza, algo me decia que esto no podia quedar ahi, que tenia que haber más, una solución sencilla y brillante, de las que cuesta llegar a averiguar, y cuando llegas a dar con la solución, piensas, ¿porque no se me habrá ocurrido antes?
Y luego pensé, porque no podemos aplicar esta misma solución para las variables globales “en disco” y la solución es mas sencilla aún. Si ya hemos realizado el ejemplo anterior, y para ello hemos utilizado una tabla en memoria, porque no hacer lo mismo con una tabla “en disco”.
Porque debemos preguntarnos, si ha funcionado con variables en memoria y ha sido mas eficiente, ¿porque no probar con variables en disco?
Además, ya habiamos resuelto un problema importante con variables de tipo array, recuerdas, y si aplicamos esta misma lógica, el ejercicio quedaria resuelto tanto para variables de tipo array en memoria, como para variables de tipo array en disco.
dic
9
Como ya habia indicado en el artÃculo anterior, voy a seguir indicando algunas nuevas sugerencias para la próxima versión, y de nuevo las voy a exponer aqui, porque no puedo exponerlas en el foro de ideas.
Continuación de … Mejoras para próximas versiones y de Marchando una de ideas!
Y una observación, que me gustaria dejar clara aunque se que no sirve de nada, pero lo tengo que decir:
Que los Nivel-1 no tengamos derecho a exponer ideas porque “no podemos votarlas” me parece un atraso, pero es lógico, “no pagamos” y por tanto no tenemos acceso de dicho foro.
Deducción lógica, los niveles-1 no podemos tener ideas, somos torpes y nuestro coeficiente intelectual es el de una gallina.
Que los Nivel-2 y superior, solo tengan 10 votos, esta bién, pero esto siginifica que solo pueden votar 10 veces, y siguiendo este razonamiento, significa que si ya han utilizado 5 votos para “votar” las ideas de otros, solo disponen de 5 votos para exponer sus propias ideas.
Deducción logica según este razonamiento: cuando un Nivel-2 o superior vota 10 veces, pierde toda su capacidad intelectual, y se vuelve por tanto incompetente, es decir, cambia a nivel-1, lo que deja su nivel intelectual a la altura de las gallinas
Esta teoria es una versión de la investigación realizada por cientificos rusos con las arañas, en la cual llegaron a la conclusión de que al cortar todas las patas a una araña, esta se quedaba “sorda”.
Si alquien quiere mas información acerca de esta investigación y de otras similares de las que ni siquiera WikiLiqs tiene conocimiento, no tenemos inconveniente en enviarselas mediante comunicación privada, y sin respondabilidad por las posibles represalias que pudieran sufrir por parte de la “T.I.A.”
Y como, a pesar de todo, estos razonamientos no me parecen nada lógicos, voy a exponer una idea, tremendamente ILOGICA y seguramente … iba a decir una ¡BURRADA!, pero la idea la dejo caer:
Disponemos de una de las mejores herramientas para desarrollos con bases de datos, y tenemos un FORO que es una castaña pilonga, “al menos el de V7″ (y por favor, no me refiero a la comunidad, me refiero a la funcionalidad del foro), mucho mejor es el de V6, pero razones habrá para esto y no las discuto.
Y tenemos un “FORO DE IDEAS” que es mejor que el de antes, pero sigue siendo “chungo”.
Y lo que “NO” tenemos, es un foro de ideas realizado con “V7″ donde podriamos hacer, opinar, exponer ideas, votar (quien tenga permiso, claro) y lo mas importante, adaptarlo a las necesidades de la comunidad, asi, “por los pinrreles”. Y nos conformamos con unas “churres” de aplicaciones, porque “no queremos reinventar la rueda” aunque eso significa seguir en la prehistoria.
Deberia caersenos la cara de verguenza, decir que con esta magnifica herramienta que nos une, y seguimos usando los recursos de las “obsoletas” bases de datos relacionales.
Ademas, ahora incluso los Nivel-1 tenemos acceso a vWebClient, si mal no recuerdo, y eso “NOS DEVOLVERIA NUESTRA INTELIGENCIA” y el derecho a poder “IMAGINAR” / “TENER IDEAS” de las que se podrian beneficiar los compañeros “Intelectualmente mas capacitados, aunque de inteligencia limirada (solo 10 ideas por barba)”
Aqui dejo las sugerencias para quien las quiera escuchar:
- Función para saber el tipo de contenido de una variable local, variable global o campo de una tabla. Eso es, una función que permita saber si una variable es numerica, alfanumerica, booleana, fecha, hora, etc. Y si ademas, pudieramos saber si tiene “Signo” y el numero de “Decimales” o la “Longitud” en el caso de variables/campos alfanumericos, mucho mejor.
- Función para saber la resolución de la pantalla que se esta utilizando en cada momento por el S.O. Esta función nos retornaria la resolución 800×600, 1024×768, etc y asi podriamos decidir si tenemos “suficiente pantalla” para mostrar determinados objetos o combinacion de objetos.
- Funciones para el calculo de codigos de barras, tanto en el Asistente de formulas, como en los informes para poder imprimir los códigos de barras.
- Un inspector de errores que nos revise todos los proyectos de una solucion y nos indique, cuales de los pryectos tienen errores, para poder revisarlos uno a uno con mas detalle. En soluciones grandes, es complicado tener que revisar los proyectos uno a uno y puedes olvidar siempre alguno. Ademas hay que revisarlos con frecuencia cuando se estan modificando constantemente, lo que hace mas dificil aun mantener limpio el desarrollo.
- Inspector de objetos no usados de un proyecto y/o solución. Creo que no necesita mayor aclaración.
- Inspector “Donde se usa” de campos e indices de las tablas. Ahora solo funciona a nivel de identificador de tabla.
- Posibilidad de poder crear el objeto BUSQUEDA en el proyecto de datos (aunque SIN formulario de entrada de datos, por supuesto).
- Posibilidad de Tubos de Ficha y de Lista en los proyectos de datos (tambien SIN formularios de peticion de datos)
- En el control objeto de un formulario, ahora es necesario crear un proceso para lanzar una busqueda que retorna una rejilla , informe o casillero. Deberia permitirse lanzar directamente una busqueda, y asi evitariamos crear el proceso solo para llamar a la busqueda.
- En la imagen siguiente, podemos ver como al intentar “Dar permiso” a un grupo de usuarios a una aplicación, no podia ver la aplicación porque no aparecia en pantalla y por tanto, complicando la historia para solucionarlo. La solución, al final, dar permiso a todas las aplicaciones y eliminar, una a una las que no debian aparecer, con lo que eso supone, posibles errores, etc…

También quiero agradecer a Velneo, que al margen de estas criticas, es cierto que ya en varias ocasiones, a escuchado las sugerencias que desde este blog se han reclamado y ha dado solución a los problemas planteados, y aqui dejo el ejemplo: Mejorar el rendimiento , que si mal no recuerdo, se solucionó en la versión 7.4.1, tan solo un mes despues, ya que el error fue reportado despues de la salida de la versión 7.4. Gracias, esto también hay que tenerlo en cuenta, y dice mucho en favor de Velneo.
¡VOLVERE … !
… con más ideas
… si mi coeficiente intelectual de gallina me lo permite.
|