Comandos de ficha y campos de Velneo V7
Tutorial avanzado » Uso avanzado de procesos » Comandos de ficha y campos de Velneo V7
Comandos de ficha y campos de Velneo V7
El grupo de comandos de Ficha y campos nos permite crear y manejar fichas, leerlas y modificarlas y acceder a sus campos e índices.

El proceso de ejemplo primero crea una ficha en memoria, da valores a los campos y luego da de alta la ficha. La ficha resultante se muestra en un formulario para que el usuario final pueda ver el resultado final.
El proceso comienza creando la ficha en memoria con el comando Crear nueva ficha en memoria. Este comando permite definir los valores que tendrá la ficha cuando la demos de alta. Hasta ese momento no se realizan operaciones reales y por tanto el comando no genera transacción.
Como parámetro del comando debemos definir el Manejador y la tabla en que vamos a crear el registro. Más adelante en el proceso, con ayuda de ese manejador, podremos gestionar el alta y la modificación de esa ficha.
En el subproceso del comando tendremos acceso a la ficha, pudiendo leer y modificar sus campos. Al tener origen en la ficha podemos leer cualquier campo del registro y usaremos el comando Modificar campo para asignar valores a los campos.
El comando Modificar campo aunque opera en si mismo no transacciona. Debe estar incluido dentro de una transacción. En el punto que estamos del proceso, todavía la ficha no ha sido dada de alta. Es el comando Alta de ficha, como veremos más adelante, el que realmente generará la transacción.
Si, por ejemplo, usamos Modificar campo en el subproceso de un comando Recorrer lista solo lectura, el comando no actuará realmente, ya que el comando no transacciona. Sin embargo, si lo usamos en el subproceso de un comando Recorrer lista lectura/escritura, éste sí transacciona, por lo que el comando Modificar campo será efectivo.
El parámetro que define el valor del campo es fórmula por lo que podemos hacer uso del asistente para edición de fórmulas para definirlo. Éste valor, por tanto, puede ser un literal, un número, una variable local, una variable global, el resultado de una función de fórmula, el resultado de una función de proceso, etc.
A la hora de crear la ficha también podemos alimentar valores a los campos objeto. Para ello hay dos comandos específicos: El comando Importar dibujo nos permite alimentar un campo objeto dibujo con la imagen cuya senda en disco pasemos como parámetro. En el proceso usamos el comando Ventana de selección de fichero para definir la senda, pero como el parámetro es fórmula, podemos hacer uso del asistente para edición de fórmulas para definirlo.
De igual forma, para asignar el valor de un campo objeto texto hemos de usar el comando Importar texto, al que debemos pasar como parámetro también la senda del fichero cuyo contenido queremos asignar como valor del campo.
Entre los comandos Ficha y campos tenemos algunos que nos dan información sobre el registro. El comando Get atributos de dibujo nos da información sobre el tamaño del dibujo que contiene el campo. El resultado lo almacenamos en variables locales que mostramos al usuario con ayuda del comando Mensaje.
También podemos mostrar el contenido del campo dibujo ayudados del comando Editor de dibujos, que nos muestra la imagen dentro del editor incorporado. Las modificaciones que realicemos serán guardadas si luego la ficha es guardada.
El último paso del proceso es dar de alta la ficha en la base de datos, que hasta ahora estaba únicamente en memoria. Para ello usamos el comando mencionado anteriormente Alta de ficha que creará el registro en la base de datos.
En el subproceso del comando tendremos acceso a leer el registro resultante, pero no a modificar. Como hasta ahora la ficha estaba en memoria, el registro no tenía código. En el subproceso del comando la ficha ya ha sido dada de alta, por lo que podemos leer el código obtenido. En el proceso nos quedamos con el valor y se lo asignamos a una variable local que luego presentaremos por medio de un mensaje.
A continuación, usamos el comando Pedir formulario para mostrar el registro creado al usuario final. Al igual que sucede con Modificar campo, las modificaciones de los valores del registro que realicemos en el formulario sólo serán efectivas si estamos en el subproceso de un comando que transaccione. Este no es el caso, puesto que en el subproceso de Alta de ficha ya no podremos modificar la ficha, sólo leerla.

En el proceso de ejemplo segundo crearemos una ficha en memoria, asignándole un valor al campo ID con clave única de forma aleatoria y comprobando que no exista previamente el valor de dos formas distintas. Por último daremos de alta el registro.
Comenzamos el proceso creando una nueva ficha en memoria con el comando Crear nueva ficha en memoria y dando valor a los campos con el comando Modificar campo.
Como segundo paso vamos a definir el código de la ficha, comprobando previamente que no exista dicho código. Para ello creamos un bucle con el comando For que se ejecutará mientras que la variable local EXISTS_ID tenga valor 1, valor que tendrá si determinamos que la clave está duplicada en cada iteración.
En el subproceso del comando For procesamos la ficha que tenemos en memoria con el comando Procesar ficha en memoria. Este comando nos permite acceder en cualquier punto del proceso a la ficha que hayamos creado previamente en memoria. En su subproceso tenemos acceso a leer y modificar la ficha. Aprovechamos entonces a modificar el campo ID con ayuda del comando Modificar campo, asignándole un valor al azar.
Para comprobar si un valor de un campo con clave única existe ya en la base de datos y por tanto no podemos repetirlo, la primera manera es usando el comando ¿Ya existe en el índice?. Este comando nos retorna en una variable local booleana si existe o no el valor.
Si el valor existe, lo que comprobamos por medio de un comando If, mostramos un mensaje indicándolo y el bucle For se vuelve a ejecutar ya que usamos la misma variable de retorno como condición para seguir ejecutando el bucle.
Otra forma de revisar si algún valor de un campo con clave única está repetido es haciendo uso del comando ¿Ya existe en alguno de sus índices. Este comando revisa todas las claves únicas y retorna dos parámetros que recogemos en las variables locales correspondientes: el primero nos indica si alguna de las claves está repetida, el segundo es un mensaje que indica cuál de ellas, mensaje que podemos presentar al usuario.
Una vez que hemos comprobado las claves, podemos dar de alta el registro en la base de datos con el comando Alta de ficha y mostrárselo al usuario con el comando Pedir formulario.

En el tercer ejemplo, seleccionaremos una carpeta de disco en la que guardaremos el contenido de los campos objeto texto y objetos dibujo de los registros. A continuación borraremos el contenido de los campos objeto y mostraremos el formulario del registro resultante.
Comenzamos el proceso usando el comando Ventana de selección de directorio para que el usuario pueda seleccionar la carpeta de destino de los objetos. Usamos entonces el comando Cargar lista para obtener todos los registros, por lo que no resolvemos ninguno de los índices.
Recorremos la lista en modo lectura y escritura con el comando correspondiente Recorrer lista lectura/escritura. Es necesario el modo escritura ya que vamos a limpiar los campos objetos, en caso contrario, que estuviéramos en sólo lectura, los comandos que usáramos no tendrían efecto.
Primero exportamos los objetos con los comandos respectivos: Exportar dibujo y Exportar texto. Para ello usamos la senda obtenida en el comando Ventana de selección de directorio y, en el caso de Exportar dibujo, la extensión determina el formato con que se exporta la imagen, estando soportado para ello los formatos JPG, PNG, BMP, etc.
El siguiente paso del proceso es eliminar ambos objetos de la base de datos, usando el comando Limpiar campo objeto, que los borra del contenedor.
El último paso presenta el registro en un formulario con el comando Pedir formulario.

El cuarto proceso de ejemplo recorre una lista de registros realizando modificaciones al azar. En el proceso veremos dos comandos que nos permiten conocer si se ha modificado un campo o la ficha.
El proceso comienza cargando los registros de una tabla con el comando Cargar lista y recorriéndolos para modificarlos con el comando Recorrer lista lectura/escritura.
A continuación modificamos un campo con el comando Modificar campo con el resultado obtenido de la función de fórmula random().
Debemos recordar siempre que si queremos realizar modificaciones hemos de incluirlas en el subproceso de un comando que transaccione como es el caso del comando Recorrer lista lectura/escritura, para que las modificaciones sean efectivas.
Cuando modificamos un campo con un valor que ya tiene, no se produce realmente la operación ni genera transacción para optimizar la ejecución de nuestras aplicaciones.
A continuación comprobamos si ha habido algún cambio en la ficha con el comando ¿Ha cambiado la ficha?. Este comando nos devuelve en una variable local booleana 1 (true) si así ha sido. Usamos la variable local para con el comando If condicionar la presentación de un mensaje indicando el hecho.
Para comprobar si hemos modificado el valor de un campo en concreto usamos a continuación el comando ¿Ha cambiado el campo? que, de nuevo, nos retorna en una variable local booleana 1 (true) si así ha sido.
Estos comandos se pueden usar también si las modificaciones son en memoria y el registro no ha sido guardado todavía, por ejemplo en un evento previo a aceptar en un formulario o en los eventos de tabla(triggers).
Usamos el resultado del comando anterior para mostrar al usuario un mensaje indicándole la modificación del campo.

El quinto proceso de ejemplo comienza creando una ficha en memoria, asignando valores y vemos dos formas de asignar un maestro, creándolo y asignándolo o seleccionándolo de una lista. También accedemos al maestro una vez asignado para tomar valores que usaremos en la propia ficha que, finalmente, daremos de alta.
Comenzamos usando el comando Crear nueva ficha en memoria y asignando valores a los campos con Modificar campo.
A continuación vemos dos formas de asignar el maestro, la primera se hace usando el comando Alta de ficha de maestro con formul que muestra al usuario un formulario de la tabla maestra que permite dar de alta un maestro y asignárselo al registro.
Otra forma es usar el comando Cargar lista para seleccionar un registro al azar con Seleccionar ficha por posición. Usaremos el comando Leer ficha seleccionada para quedarnos con el código del maestro en una Variable local.
Usaremos este código para asignárselo al registro por medio del comando Modificar campo.
Con el comando Leer ficha de maestro que usamos a continuación podemos acceder al maestro asignado al registro para lectura, por lo que usamos una Variable local para quedarnos con un dato y asignar su valor al registro con el comando Modificar campo. El comando no permite más que leer el registro, no podemos acceder para escribir.
También podemos acceder al maestro para modificar con el comando Modificar ficha de maestro. Al contrario que con el comando anterior, Leer ficha de maestro, este comando transacciona por lo que los comandos Modificar campo y otros, tendrán efecto.
Por último, damos de alta el registro con Alta de ficha y mostramos el registro en un formulario con Pedir formulario.
