1. Conectividad e Importacion de Datos en tiempo real...

29
Consultoría online 30 de Octubre de 2013 1. Conectividad e Importacion de Datos en tiempo real / OnLine desde otras Bases de Datos. Luis Alberto Lopez Comandos de instrucción para el acceso a Bases de datos externas. Desde Velneo V7 podemos acceder a bases de datos externas haciendo uso del grupo de comandos Bases de datos externas. El tutor de acceso a Bases de Datos externas usa como ejemplo el acceso a una base de datos Access, y muestra la importación de registros en la base de datos de Velneo a partir de los datos obtenidos con una sentencia SQL de tipo SELECT. Tutor http://velneo.es/velneoopenapp/tutordeaccesoabasededatosexternas10/ Ejemplo http://velneo.es/accesoabasesdedatosexternas/ Ficheros de texto Para la importación y exportación mediante ficheros de texto: http://velneo.es/velneoopenapp/tutordeimportacionexportaciondeficherosascii/ Tutor usando javascript http://velneo.es/velneoopenapp/importacionyexportaciondinamicaconjavascript/ En el seminario de API de Velneo para Javascript que se realiza habitualmente, se muestra un ejemplo de importación/exportación dinámica con API de Velneo. Curso API de Velneo V7 para JavaScript http://velneo.es/info/velneov7/comoempezar/formacion/cursodeapidevelneov7parajavascri pt/ Pol. Ind. A Granxa, Edificio vCenter Rúa D, esquina paralela 3 36400 Porriño (Pontevedra) España Telf. (+34) 902 02 02 61 [email protected] velneo.es Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO37578, Inscr 1ª

Transcript of 1. Conectividad e Importacion de Datos en tiempo real...

Consultoría online 30 de Octubre de 2013

1. Conectividad e Importacion de Datos en tiempo real/ OnLine desde otras Bases de Datos. Luis AlbertoLopez

Comandos de instrucción para el acceso a Bases de datos externas.Desde Velneo V7 podemos acceder a bases de datos externas haciendo uso del grupo decomandos Bases de datos externas.

El tutor de acceso a Bases de Datos externas usa como ejemplo el acceso a una base de datosAccess, y muestra la importación de registros en la base de datos de Velneo a partir de los datosobtenidos con una sentencia SQL de tipo SELECT.

Tutorhttp://velneo.es/velneo­open­app/tutor­de­acceso­a­base­de­datos­externas­10/

Ejemplohttp://velneo.es/acceso­a­bases­de­datos­externas/

Ficheros de textoPara la importación y exportación mediante ficheros de texto:http://velneo.es/velneo­open­app/tutor­de­importacionexportacion­de­ficheros­ascii/

Tutor usando javascripthttp://velneo.es/velneo­open­app/importacion­y­exportacion­dinamica­con­javascript/

En el seminario de API de Velneo para Javascript que se realiza habitualmente, se muestra unejemplo de importación/exportación dinámica con API de Velneo.

Curso API de Velneo V7 para JavaScripthttp://velneo.es/info/velneo­v7/como­empezar/formacion/curso­de­api­de­velneo­v7­para­javascript/

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª

Consultoría online 30 de Octubre de 2013

Funciones remotas (Windows)Función remota contra V7: Por medio de funciones remotas con la librería vRemoteFunctionV7.dllque se suministra con Velneo vClient V7, podemos hacer que cualquier aplicación acceda a unservidor Velneo vServer V7 y ejecute una función remota, obteniendo el retorno. De esta formatenemos tanto la posibilidad de incluir información como de recibirla.http://velneo.es/ejecucion­desde­velneo­6x­de­funciones­remotas­de­velneo­v7/http://velneo.es/como­hacer­y­usar­funciones­remotas­v7/http://velneo.es/traspaso­datos­6x­v7­con­vremotefunctionv7­dll/

Integración por medio de TCP (con PLC’s y otros)Protocolo TCP: Totalmente bidireccional, podemos hacer que tanto un cliente como el servidorde Velneo V7 puedan actuar como servidores de información o como clientes de una conexiónTCP.http://velneo.es/info_v7_714_es/velneo_vdevelop_v7/proyectos_objetos_y_editores/proyecto_de_aplicacion/protocolo_tcpip/

WebServiceHaciendo uso de Velneo vModApache V7 o protocolo TCP podemos servir información que elcliente pueda consumir.http://velneo.es/info_v7_714_es/velneo_vmodapache_v7/http://velneo.es/info_v7_714_es/velneo_vdevelop_v7/proyectos_objetos_y_editores/proyecto_de_aplicacion/protocolo_tcpip/http://davidgu.net/2013/10/12/el­idioma­de­las­aplicaciones/

Consumir WebServiceExisten dos partes en este tema. Enviar la información y obtener la respuesta y por otro ladoprocesar/parsear la respuesta.

Para enviar y obtener la información tenemos:● De forma nativa dentro de Velneo podemos usar “Get fichero from url”, aunque está

limitado a llamadas GET.● Existen multitud de herramientas en línea de comandos que podemos invocar desde

Velneo para enviar/recibir contenido desde una url. Por ejemplo curl (http://curl.haxx.se/).Curl es una librería que está se distribuye compilada para muchos sistemas operativos yque además suministra una dll para usar desde tus propias aplicaciones.

● Para cosas sencillas recomendamos usar vCurl (http://velneo.es/velneo­open­app/vcurl/).Es una librería intermedia entre Velneo y libcurl.dll.

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª

Consultoría online 30 de Octubre de 2013

○ Ejemplo: Obtener el xml de http://feeds.bbci.co.uk/news/england/london/rss.xml enuna variable local de Velneo V7 para poder parsearla

● Para cosas más complicadas, por ejemplo comunicación soap+xml, recomiendo el usode curl directamente en línea de comandos (ejecutar comando de sistema) indicando acurl que grabe la respuesta en un fichero. Después leer ese fichero con Velneo V7

● Tener en cuenta que cuando se llama a webservice con soap hay que enviar un xmlsegún se indica en WSDL de ese webservice. Aquí explican como:http://blog.rampartfaq.com/2010/06/how­to­invoke­web­service­call­with.html

Para procesar el resultado en caso de que se trate de XML podemos hacer uso de algunasfunciones que se incluyen en la open app vTools (http://velneo.es/velneo­open­app/vtools/):

● getChildNode(node, pos): Retorna la primera ocurrencia si pos=0 del nodo pasado porparámetro

● nChildNode(node): Retorna el número de ocurrencias de node● getAttribute(attribute): Retorna el valor del atributo pasado como parámetro

En el caso de JSON podemos procesar el resultado directamente con vJavascript.

Un ejemplo de uso de QML para webservicehttp://velneo.es/velneo­open­app/qml­ejemplo­bus­gijon/

Driver ODBC (Windows)Lo comentamos el último ya que se trata del medio con menor rendimiento y limitaciones para eldesarrollo de comunicaciones, dadas las características de los drivers ODBC y del lenguajeSQL.Mediante el driver ODBC podemos acceder a la base de datos de Velneo y acceder a lasinstancias de una solución. Las características de este driver son:

­ Driver ODBC Version: 3.00­ ODBC Version: 3.52­ ODBC API Conformance Level 1­ ODBC SQL Conformance Core Level­ ODBC SQL Interface Core Level­ ANSI SQL­92 Entry Level

http://velneo.es/info_v7_714_es/velneo_odbc_driver_v7/

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª

Consultoría online 30 de Octubre de 2013

2. Desplegar mi aplicación en un dispositivo movil.­Que se os recomienda ahora? Manuel Catucuago

Ahora mismo hay varias opciones, y depende a qué esté orientado el uso de tu aplicación serámás recomendable una u otra.

Tablets con Windows 8 ProLos dispositivos móviles con mejor rendimiento y estabilidad, además de mayor grado defuncionalidad son los tablet con sistema operativo Windows 8 Pro. Estos equipos disponen deprocesadores x86, por lo que es posible ejecutar cualquier componente de Velneo V7, incluido elservidor Velneo vServer V7 (por si es necesaria la ejecución en local al dispositivo), además decualquier otra aplicación de Windows.

Esta es la mejor opción para usos profesionales ya que se trata normalmente de equipos conbuenas características de rendimiento, lo que unido a lo comentado antes, hace que sea eldispositivo más versátil.

Dispositivos AndroidLos dispositivos Android con procesador ARM pueden ejecutar la versión beta de Velneo vClientV7. La tecnología aún se encuentra en fase beta y el sistema operativo no está dirigido al usoprofesional, por lo que encontraremos limitaciones en el uso que deberemos asumir. De todasformas, las pruebas realizadas hasta el momento muestran que, sobre en todo en tabletas, laejecución de aplicaciones Velneo V7 es bastante buena.

Debemos tener en cuenta sin embargo que la idiosincrasia del sistema operativo además esbastante peculiar, con una gestión de los recursos especial que hace que ante requerimientos delsistema cierre las aplicaciones necesarias para responder, lo que puede afectar a la ejecución deVelneo V7 y es una de las razones que impide que pueda usarse un servidor de Velneo V7. Todoello debe tenerse en cuenta cuando pensemos en un uso profesional de estos dispositivos.

Otros dispositivosComo solución para el acceso desde otros dispositivos se encuentran las siguientes:

● Web: Por medio del módulo para Apache Velneo vModApache V7 podemos servir Htmlque sea compatible para todos los dispositivos con navegador web, por lo queaccederemos a dispositivos variados sin problema iOS, BlackBerry, etc.

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª

Consultoría online 30 de Octubre de 2013

● WebService y Frameworks de desarrollo para móviles: Existen varios frameworks para eldesarrollo de aplicaciones para móviles que pueden ser usados, como PhoneGap, etc.,que permitan crear aplicaciones que mediante TCP o Http se conecten al servidor deVelneo para acceder a información. En el servidor, nuestra aplicación puede servirinformación vía TCP o HTTP con Velneo vModApache V7 que el framework sea capaz deconsumir.

● Terminal server: Como última opción, tenemos la posibilidad de acceder por terminalserver a un equipo desde el que podamos usar los componentes de Velneo para laejecución de aplicaciones. Clientes de terminal server o similares los hay para muchosdispositivos y sistemas operativos (iOS, Android, etc.)

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª

Consultoría online 30 de Octubre de 2013

3. Tenemos un software en otra herramienta dondemanejamos digitales, estos digitales no estánguardados en la aplicación sino un vínculo parabuscarlo en una carpeta. En velneo como sería elmodelo para manejar el almacenamiento de digitales(PDF,JPG,ETC). Paula Andrea Uribe.

La solución más óptima depende del número de registros que vayan a contener objetos ytambién del tamaño de dichos objetos. Si el número es reducido se pueden almacenar en campoobjeto texto, objeto dibujo u objeto binario de la tabla. Si el número es elevado entonces puede sermejor opción almacenar el contenido digital en disco y vincular el fichero al registro a través de susenda en disco.

También depende también del uso que haga de los ficheros, quién los va a usar y dónde se van aguardar.

Si va a guardarlos en el dispositivo del usuario, no necesitan estar en el servidor, entonces estáclaro que debe usar vínculos, para evitar que viaje la información del cliente al servidor.

Si requiere ser guardado en la misma máquina que el servidor, entonces puede usar ambasopciones, pero en el caso de vincular, deberá hacer accesible la carpeta de ficheros medianteSDV, FTP o servidor web, lo que requerirá programación adicional. Si se guardan en el disco delservidor, para mostrarlos hay que cachearlos en local para poder abrilos, y borrar la caché al saliro cerrar.

Los dibujos pueden importarse a la base de datos de Velneo en formato destino JPG. Siqueremos guardar imágenes en otro formato conservando el formato original no JPG, entoncesdebemos hacer como con el resto de tipos de fichero que no sean imagen, usar el objeto Binario,que nos permite almacenar cualquier tipo de fichero. En ese caso, debemos guardar informacióndel nombre del fichero y tipo de fichero, de cara a la recuperación posterior de esa información.Usando funciones JavaScript podemos fácilmente importar y exportar el dibujo al campo objetobinario y a disco.

Si son pocos los elementos que almacenaremos en la base de datos, desde luego el uso de loscampos Objeto es el adecuado, ya que evita programaciones adicionales.

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª

Consultoría online 30 de Octubre de 2013

Si sabemos que serán muchos elementos, debemos decidir cuál de ambas opciones nos puedeser más rentable a la larga, en función de lo expuesto anteriormente, teniendo en cuenta temascomo copias de seguridad, manejar ficheros grandes, etc.

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª

Consultoría online 30 de Octubre de 2013

4. Qué recomendaciones o puntos se deben tener encuenta al utilizar índices complejos en la aplicación,Ejemplo: ¿Es pertinente tener una instrucción queregenere estos índices desde cierta utilidad en elsistema o algo así?. José Antonio Olaya.

La regeneración de índices complejos únicamente requiere hacerse cuando se crea un nuevoíndice complejo que no existía anteriormente o cuando realizamos cambios en la definición delíndice complejo.

La forma de hacer la regeneración sin programación es haciendo uso de Velneo vDataClient V7 ysu función Regenerar índices del menú Utilidades. Los índices complejos no requieren el uso dela opción Regenerar área de datos.

Si queremos que esta regeneración se realice de forma manual, podemos poner una opción quese dispare únicamente desde Velneo vDataClient V7, o una opción de menú configurada ennuestra aplicación, definida para supervisores de tal forma que únicamente ellos puedan realizaresa regeneración.

También se puede crear una variable global en disco asociada a la regeneración, que se usecomo semáforo para lanzar la regeneración la primera ocasión en que se ejecuta esa versión dela aplicación, por ejemplo, en el proceso ON_INIT_SERVER. En esa variable se puede guardar laversión de la última regeneración de tal forma que en cualquier nueva versión baste comprobar sise corresponde y en caso contrario lanzar la regeneración de los índices complejos.

La instrucción para regenerar índices complejos theApp.regenComplexIndex()

En cualquier caso, disponer de una opción que de forma manual nos permita regenerar área dedatos e índices de todos los tipos de todas las tablas es más que interesante. Hay ejemplos decómo realizar esta tarea de forma dinámica con ayuda del API de Velneo para JavaScript.http://dl.velneo.com/es/productos/v7/ayuda/7.14/velneo_vdevelop_v7/manual_scripts_velneo_v7_714.pdf

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª

Consultoría online 30 de Octubre de 2013

5. Para la creación de un organigrama empresarial usouna tabla maestra con clave arbolada con los camposID, y Puesto. Cómo puedo hacer para que al dar de altaun registro, el ID se genere automáticamente. En unesquema  de ID tipo 1,11,111,112,12,13,131… GustavoCamarena

Se trata de una funcionalidad muy interesante que además resulta muy sencillo de programar.Siguiendo la política y recomendaciones de Velneo a la hora de programar lo que debemos haceres programar esta funcionalidad de forma que la tengamos asociada al árbol visor de la tabla(objeto de lista) y que independientemente donde lo visualicemos dispongamos de esta utilidad.

Habitualmente en los sistemas de arboles, como por ejemplo el propio encarpetado de objetos deVelneo vDevelop, disponemos de dos opciones. Una de ellas para crear una rama hermana a laseleccionada, por ejemplo si estamos en el registro de código 1 que nos cree el 2. La otra opciónnos permite crear una rama hija, si estamos posicionados en el registro 1 que nos cree el 11.

Por tanto lo que haremos será crear un manejador de evento asociado al visor de la tabla paracada funcionalidad. En estos manejadores de evento lo que haremos será en primer lugaracceder al registro seleccionado en el árbol y leer su código. A continuación ya sólo tendremosque crear una nueva ficha a la que le modificamos el campo ID con el valor correspondiente ymostramos el formulario de alta al usuario.

Incluso si disponemos de diversos objetos de lista en los que queremos incluir dichafuncionalidad podemos realizar todo el cálculo en una función de proceso. Esta función recibecomo parámetro de entrada el ID seleccionado y si ha de crear una rama hija o una hermana.

Por último crearemos una acción para cada utilidad (Alta de rama hija y Alta de rama hermana).Estas acciones simplemente disparan una señal, las incluimos en una toolbar y asociamos latoolbar al árbol visor. En el árbol asociamos mediante dos conexiones de evento ambas señalesde las acciones a su correspondiente manejador de evento.

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª

Consultoría online 30 de Octubre de 2013

6. Demostración de configuración y usos de losíndices complejos. Por ejemplo: ¿Podemos mostrardatos de una tabla haciendo uso del valor de uncampo de una tabla de extensión de ésta? JoelCabrera.

http://www.youtube.com/watch?v=fiyhhHIpIEU&feature=youtu.be

En el vídeo se muestran tres ejemplos muy claros del uso de los índices complejos así  como desu programación. Este vídeo es la mejor explicación que podemos encontrar a una cuestióngenérica sobre el uso de los índices complejos.

Una cuestión muy importante sobre los índices complejos es que en la versión actual esnecesario forzar su reconstrucción cuando creamos un nuevo índice complejo o modificamosuno ya existente, sobre una base de datos ya creada. Podemos hacerlo o bien desde VelneovDataclient o mediante programación utilizando las utilidades de JavaScript.

Resolviendo el ejemplo concreto de la consulta, en la versión actual es posible buscar registrosde la tabla de extensión en base a datos de la tabla maestra. Por ejemplo en una estructura detablas en la que tenemos Entidades (nombre, nif, etc.) y su extensión Cliente, podemosbuscar/indexar los registros de Clientes por el nombre de su entidad.

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª

Consultoría online 30 de Octubre de 2013

7. En una actualización de una tabla de stocks elcampo cantidad que acumula artículos mediante latabla movimientos, si se borra el registro de la tabla demovimientos, ¿se actualiza la tabla de stocks y seresta?. Chechu Altamirano

Ejemplo vERP

Documentación sobre actualizaciones

Las Actualizaciones están compuestas por Componentes de actualización que definen loscampos que se actualizarán de la tabla enlazada y cómo se realizará la actualización.

En el componente hemos de establecer la acción positiva, es decir, cómo debe actualizar el valordel campo en el caso de alta de ficha, ya que en ejecución determinará de forma automática cuálha de ser la forma de actualizar el campo en los otros dos casos: modificación y baja de la ficha.

Una actualización será disparada cuando el registro sea modificado y cambie alguno de loscampos que intervienen en la misma, tanto en la condición como en la fórmula de actualización.

En el caso de tablas con persistencia en memoria, las actualizaciones se hacen a otras tablas enmemoria y otras tablas en disco.

Cuando creamos una nueva actualización, debemos ejecutar un proceso que repase losregistros y calcule el valor de partida.

Artículos sobre actualizaciones:http://velneo.es/cuando­se­disparan­las­actualizaciones/http://velneo.es/actualizaciones­tablas­memoria/

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª

Consultoría online 30 de Octubre de 2013

8. Me gustaria saber como puedo montar un formularioavanzado tirando de varias tablas y sincronizando lasinformaciones mostradas en distintas rejillas, etc.Rodolfo Villanueva

Ejemplo con Solución Pedidos

Formulario con sincronización de rejillas y árboles

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª

Consultoría online 30 de Octubre de 2013

Multivista en modo multiobjeto

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª

Consultoría online 30 de Octubre de 2013

Formulario con sincronización de rejillas y otros controles:

Multivista en modo Wizard

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª

Consultoría online 30 de Octubre de 2013

Ejemplo de manejador de evento sincronizador en formulario

Ejemplo de proceso sincronizador en multivista

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª

Consultoría online 30 de Octubre de 2013

9. Dudas en la inserción en tabla extendida desdeformulario en tabla principal. Vicente Linares.

Varios modos● Usando simplemente herencia inversa

Punto de inserción + inserción● Usando extensiones de ficha con tablas de extensión

*El formulario es de la tabla de extensión● Usando extensiones de ficha

El formulario es de la tabla principal

Inserción en formularios mediante puntos de inserción● Tabla de extensión: Esta propiedad solamente estará activa si la tabla asociada al

formulario es un maestro de extensión de otra tabla. Si la tabla asociada al formulario esun maestro de extensión de otra tabla, podremos insertarlo mediante herencia inversa enun formulario punto de inserción de la tabla padre. Es decir, que si hemos creada unatabla Clientes como maestro de Extensión de la tabla Entidades, podremos incluir en unpunto de inserción de la tabla de Entidades un formulario de su extensión Clientes. En ellapodremos activar/desactivar las opciones siguientes: ●

○ Botón alta tabla de extensión: Si activamos esta opción, en ejecución, dentro de lapestaña correspondiente a este formulario, se incluirá un botón que permitirá darde alta el registro de la tabla de extensión si no existe.

○ Botón baja tabla de extensión: Si activamos esta opción, en ejecución, dentro de lapestaña correspondiente a este formulario, se incluirá un botón que permitiráeliminar el registro de la tabla de extensión.

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª

Consultoría online 30 de Octubre de 2013

http://velneo.es/info_v7_714_es/velneo_vdevelop_v7/proyectos_objetos_y_editores/insercion/

Inserción mediante fichas de extensiónhttp://velneo.es/info_v7_714_es/velneo_vdevelop_v7/proyectos_objetos_y_editores/proyecto_de_aplicacion/formulario/fichas_de_extension/

Una extensión de ficha nos permite acceder a una ficha de una tabla distinta a la tabla asociada alformulario principal.Un uso habitual será el de editar maestros de extensión, aunque no es obligatorio, pues tambiénpodremos usarlo para editar maestros normales de la ficha actual, e incluso de otra tabla norelacionada.Se trata de un sub­objeto de formulario, por lo que lo crearemos a través del panel de sub­objetosdel editor de formularios.El formulario estará asociado a una tabla y mediante un sub­objeto extensión de ficha declaradoen el mismo, resolveremos cuál será la otra tabla que va a ser editada en el formulario.Las propiedades de una extensión de ficha son:

● Identificador: Etiqueta alfanumérica que identifica de forma unívoca al sub­objeto. Esteidentificador será el que usemos en fórmulas y para referenciarlo en otras propiedades.

● El identificador constará de mayúsculas y números exclusivamente. Al identificar de formaunívoca una variable no puede haber duplicidad.

● Nombre: Etiqueta alfanumérica que servirá como descriptor del sub­objeto. Se usará parapresentar información de la misma en objetos e inspectores.

● Podemos definir una etiqueta por cada idioma presente en el proyecto.

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª

Consultoría online 30 de Octubre de 2013

● Estilos: Podemos definir el estilo Privado que limita el acceso del usuario final alsub­objeto desde puntos donde no se haya programado el acceso al mismo.

● Comentarios: Esta propiedad nos permite documentar el uso del sub­objeto.● Modo: Nos permite definir el modo en el que se cargará la otra ficha. Hay dos valores

posibles:○ Campo puntero: Lo usaremos cuando queramos que la ficha de extensión sea un

maestro de la tabla asociada al formulario.○ Proceso: Lo usaremos cuando queramos que la ficha de extensión sea una ficha

de otra tabla que no esté enlazada con la actual.● Tabla: Esta propidad podremos editarla si en la propiedad modo hemos asignado el valor

campo puntero.● Proceso: Esta propidad estará disponible si en la propiedad modo hemos asignado el

valor proceso. en ella seleccionaremos el proceso que resolverá la ficha que queremosusar como extensión de la ficha asociada al formulario. El proceso, tendrá que tenercomo salida una ficha de la tabla que usaremos como extensión de la ficha. En este caso,en la propiedad tabla se rellenará automáticamente con la tabla de salida de dichoproceso.

● Alta ficha principal: Esta propidad nos permite definir el comportamiento de la ficha deextensón en el caso de un alta de registro de la ficha principal. Las opciones posibles son:

○ Previo a la operación principal: Si esta opción está activada, cuando se mandeguardar la ficha principal, el sistema forzará antes la grabación de la ficha deextensión .

○ Alta ficha de extensión permitida: Si esta opción está activada, dará de alta la fichade extensión al grabar la ficha pricipal. Si no está activada, no dará de alta la fichade extensión.

○ Modificación ficha de extensión permitida: Si esta opción está activada, modificarála ficha de extensión al grabar la ficha pricipal. Si no está activada, no modificará laficha de extensión.

● Baja ficha principal: Esta propidad nos permite definir el comportamiento de la ficha deextensón en el caso de una baja de la ficha principal. Las opciones posibles son:

○ Previo a la operación principal: Si esta opción está activada, cuando se mandeborrar la ficha principal, el sistema forzará antes el borrado de la ficha de extensión.

○ Baja ficha de extensión permitida: Si esta opción está activada, borrará la ficha deextensión al borrar la ficha pricipal. Si no está activada, no borrará la ficha deextensión.

● Modificación ficha principal: Esta propidad nos permite definir el comportamiento de laficha de extensón en el caso de una modificación del registro de la ficha principal. Lasopciones posibles son:

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª

Consultoría online 30 de Octubre de 2013

○ Previo a la operación principal: Si esta opción está activada, cuando se mandeguardar la ficha principal, el sistema forzará antes la grabación de la ficha deextensión .

○ Alta ficha de extensión permitida: Si esta opción está activada, dará de alta la fichade extensión al grabar la ficha pricipal. Si no está activada, no dará de alta la fichade extensión.

○ Modificación ficha de extensión permitida: Si esta opción está activada, modificarála ficha de extensión al grabar la ficha pricipal. Si no está activada, no modificará laficha de extensión.

Para editar un campo de una extensión de ficha añadiremos al formulario el control de edicióncorrespondiente y, en la propiedad ficha extensión, seleccioaremos el sub­objeto extensión deficha declarado en el formulario del que va a alimentarse. Una vez hecho esto, si editamos laspropiedad contenido del mismo y abrimos el asistente de fórmulas, veremos que al abrir la listade campos nos presentará directamente los campos de la extensión de ficha y no de la fichaasociada al formulario.En los formularios pueden convivir tanto controles que visualicen/editen el maestro como hastaahora, como un maestro, con controles que usando la extensión de ficha editen directamente elmaestro.Debemos de tener en cuenta que si controles de ficha de extensión para editar un maestro, paradar de alta un nuevo maestro, debemos limpiar previamente el puntero #ID, poniéndolo a 0,porque si no, lo que haríamos sería editar directamente la última ficha seleccionada, en lugar dedar de alta un nuevo maestro de extensión.Nuestra recomendación es usar un botón o check que permita alternar entre ambos métodos yque mediante manejador de evento se encarge de limpiar el maestro en el caso de alta.Tanto las extensiones de ficha como los maestros de extensión como los índices complejossonelementos independientes, pueden existir sin los demás, aunque es cierto que se complementan,pueden usarse independientemente del resto.Un formulario que esté asociado a una tabla de tipo maestro de extensión podremos usarlo pararesolver herencia inversa en un formualrio de su tabla padre. Ver el capítulo dedicado alsub­objeto inserción para ampliar información al respecto.Veamos un ejemplo práctico, podremos definir un formulario de origen FACTURA (ficha principal)y declarar como ficha de extensión el puntero a la tabla CLIENTE (ficha de extensión). En elformulario podremos poner controles tanto de la tabla FACTURA como de la tabla CLIENTE y elusuario podrá editar campos de ambas tablas en el mismo formulario. Velneo se encarga dealmacenar la información de ambas tablas tras un alta, baja o modificación según laconfiguración que el desarrollador haya definido en la ficha de extensión.Para declarar una ficha de extensión en el formulario tan sólo tenemos que crear el subobjeto yrellenar las siguientes propiedades.

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª

Consultoría online 30 de Octubre de 2013

Como vemos en la imagen la ficha de extensión de un formulario puede tener como origen uncampo puntero de la tabla de origen del formulario o un proceso.Campo puntero nos permite editar en el formulario, subformulario o vista de datos la informaciónde cualquier maestro, incluso dar de alta el registro si no existe, modificarlo e incluso podríamosllegar a eliminar un maestro directamente desde la ficha de extensión.Proceso nos permite mostrar y editar en el formulario, subformulario o vista de datos cualquierregistro de cualquier tabla ya dentro del proceso podremos obtener y alimentar la ficha de salidadel proceso con el registro de la tabla que nos interese. Al igual que ocurría con el campopuntero, la ficha de extensión editada podemos usarla para realizar cualquier operación de basede datos, alta, modificación o baja.La ficha de extensión permite alimentar no sólo a los controles del formulario principal, tambiénpodemos aplicar fichas de extensión en subformularios e incluso en formulario incrustados en elcontrol vista de datos del formulario.Velneo gestiona automáticamente como se comportarán las fichas de extensión respecto a lasoperaciones de la ficha principal. Hay tres propiedades importantes que debes revisar cuandocreas una ficha de extensión ya que de esta configuración depende las operaciones que Velneorealizará de forma automática de las fichas de extensión cuando realice las operaciones de alta,baja o modificación de la ficha principal del formulario:Alta ficha principal

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª

Consultoría online 30 de Octubre de 2013

Baja ficha principal

Modificación ficha principal

En la imagen vemos la configuración por defecto. Como vemos se pueden marcar de formaindependiente los check de alta, modificación o baja indicando si debe realizarse esa operaciónpara el registro de la ficha de extensión. Hay que tener en cuenta que cuando se produce el altade la ficha principal, la ficha de extensión puede ya existir, por ese motivo se contempla en alta ymodificación la posibilidad de que la ficha de extensión pueda estar en cualquiera de los dosestados. Además, es importante marcar o desmarcar el check de previo a la operación principalpara garantizar el orden en que se realizan las operaciones, algo fundamental cuando porejemplo de extensión es maestra de la ficha principal, en ese caso el alta o modificación debe serprevio y lo contrario sucede si la ficha de extensión corresponde a una tabla histórica. En lasbajas debemos proceder de forma inversa.Cuando creamos un formulario de una tabla de extensión Velneo nos creará automáticamente laficha de extensión de la tabla padre y le pondrá el identificador ID a la ficha de extensión.Una vez declarada la ficha de extensión podremos crear controles en el formulario editandoinformación tanto de la ficha principal como de cualquiera de las fichas de extensión. Parahacerlo tendremos que cubrir adecuadamente la nueva propiedad “Ficha extensión” queencontraremos en los controles del formulario. Por defecto esta propiedad asume el valor

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª

Consultoría online 30 de Octubre de 2013

“.ninguno” lo que permite usar los datos de la ficha principal o podemos elegir cualquier de lasfichas de extensión.

Cuando editemos propiedades de los controles del formulario veremos como en el editor defórmulas nos permitirá diferentes posibilidades, por ejemplo:En la propiedad contenido podremos utilizar datos de la ficha principal o de la ficha de extensiónseleccionada.En las propiedades condición de visible o condición de activo, por ejemplo, veremos que laventana de selección de campo para la fórmula nos mostrará el árbol con todas las fichas deextensión más la ficha principal. Es decir, podremos condicionar un control a que se cumplancondiciones en cualquiera de la fichas que tengamos declaradas en el formulario.

Velneo gestionará automáticamente la sincronización de la información entre todas las fichaspresentes en el formulario, de tal forma que cuando editemos un dato de un maestro podremosver como cambia en tiempo real en todos los lugares donde se usa. Todo esto sin necesidad deque el desarrollador escriba ni una sola línea de código.Otros temas importantes a tener en cuenta:

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª

Consultoría online 30 de Octubre de 2013

Si en el formulario de clientes declaradas un edit con el contenido #ID.NAME, ese edit te servirápara hacer la selección de la entidad del cliente, pero no te servirá para modificar directamente elnombre de la entidad.Si deseamos permitir el nombre de la entidad que es una ficha de extensión en el formulario delcliente debemos insertar un control de edición con la propiedad “Ficha extensión” ID y en elcontenido declararemos #NAME, pues el control pertenece al registro de entidad.Si declaramos en el mismo formulario los dos controles anteriores, es decir un edit sobre la fichaprincipal (cliente) con el contenido #ID.NAME que nos permitirá seleccionar la entidad ydeclaramos también un control de edición para la ficha de extensión ID (entidad) con el contenido#NAME que nos permitirá crear una nueva entidad. Tendremos que gestionar el modo en el queesté trabajando el usuario que podrá ser de selección o de alta. ¡Atención! debemos tener laprecaución de controlar que si el usuario pasa del modo selección al modo alta debemos limpiarel campo ID la tabla clientes para que no apunte a ninguna entidad, ya que de lo contrario lo queescribiese el usuario en el edit será el nombre con el que se modificaría la ficha seleccionadapreviamente.

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª

Consultoría online 30 de Octubre de 2013

10. En una rejilla, cómo se puede ocultar la primeracolumna que aparece con el número de registro de latabla. Es decir, yo quiero solo presentar el ID y elNAME y no Nº Registro, ID y NAME. Ricardo Patón

● Modo ver cabeceras: Permite configurar qué cabeceras de la rejilla serán visualizadas.Los valores posibles son:

○ Horizontal y vertical: Se mostrará horizontalmente, en la parte superior de la rejilla,un encabezado con los títulos de cada columna y verticalmente, en la parteizquierda de la rejilla, un encabezado que mostrará la posición física que cadaregistro ocupa el en fichero. Este valor no estará disponible si e la rejilla se le haactivado la propiedad pie activo.

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª

Consultoría online 30 de Octubre de 2013

○ Horizontal: Se mostrará horizontalmente, en la parte superior de la rejilla, unencabezado con los títulos de cada columna.

○ Vertical: Se mostrará verticalmente, en la parte izquierda de la rejilla, unencabezado que mostrará el valor del campo ID de cada registro. Este valor noestará disponible si e la rejilla se le ha activado la propiedad pie activo.

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª

Consultoría online 30 de Octubre de 2013

○ Ninguna: No se mostrará ningún encabezado.

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª

Consultoría online 30 de Octubre de 2013

11. Estructura de escritura en una tabla bajo TCP/IP.Necesito escribir en una tabla y me gustaría tener masclaro esta parte. Carlos Muñoz.

Ejemplo sobre Tutor de protocolo TCP

Por un lado estaría la recepción, y por otro el procesado. Esta parte última es igual si leemos unfichero plano en disco, por ejemplo.

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª

Consultoría online 30 de Octubre de 2013

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª

Consultoría online 30 de Octubre de 2013

12. Cuando estoy en block de formulario  acepta elregistro al pasar al siguiente,  cuando llego al ultimono se puede aceptar. Si deseo poner unacondicionante if para que sepa que el puntero esta enel ultimo registro, como lo hago. Jose Noble Espejo

Ejemplo con solución de Pedidos: Opción Clientes (Alternador con Bloc)

Se puede poner un botón aceptar o se fuerza aceptar en la pérdida de foco u onHide. Debemostener en cuenta que no sucederá únicamente cuando lleguemos al último registro, si no que si elusuario se mueve a otra ventana, por ejemplo, continuará con la edición en curso en el formularioque haya quedado, sin ser el último.

Que está el último lo sabe el bloc, no el formulario. Llegado el caso se puede usar una variableglobal para que tenga esa información, pero entendemos que con gestionar la pérdida de foco ola señal onHide ya se puede controlar que se acepte ese formulario.

13. Cómo puedo hacer para definir el tamaño de lospaneles o rejillas en un MultiVista ? Por ejemplo,tengo un multivista con 2 rejillas pero necesito queuna de ellas me quede de un tamaño especifico o laotra que tome el tamaño restante de la pantalla. CésarBarrios

El tamaño de los multivista es autoautoajustable, en función del tamaño de los objetos que locompongan. Podemos jugar con la configuración de los distintos elementos que componen elmultivista, pero no podemos establecer valores fijos para los tamaños correspondientes a losdistintos objetos.

Si necesitamos una configuración específica, hemos de usar un formulario en el que realicemosla sincronización tal y como se indica en la consulta 8.

Pol. Ind. A Granxa, Edificio vCenterRúa D, esquina paralela 336400 Porriño (Pontevedra)España

Telf.  (+34) 902 02 02 [email protected]

Velneo, S.A. C.I.F. A36494706 Inscrita en el Reg Mercantil de Pontevedra al tomo 3085, Libro 3085, Folio 90, Hoja PO­37578, Inscr 1ª