Campos (grupo de comandos)

Grupo de comandos de bases de datos que nos permiten interactuar con campos.

¿Ha cambiado el campo?

Comando de instrucción del grupo Ficha y campos que comprueba si ha cambiado o no un campo determinado de una ficha de una tabla.

Origen de la instrucción: ficha de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

Identificador del campo

Identificador del campo a comprobar.

Identificador de variable local booleana de retorno de ok

Variable local de tipo booleano que recogerá si el campo ha cambiado (1) o no (0).

Funcionalidad

Este comando devuelve en una variable local booleana si el campo seleccionado ha cambiado (1) o no (0).

Comentarios

La variable local booleana de retorno podrá ser tanto una ya existente como una nueva.

Este comando compara el contenido que tiene el campo en memoria con contenido que tenía al abrir la ficha.

Si se trata de un alta de ficha, detectará que ha habido cambios si el campo a evaluar no está vacío.

Si se trata de una modificación, la comparación se hará con el valor que tenga ese campo en disco.

Ejemplo

Mostrar mensaje de que 'No es posible cambiar la fecha' cuando el campo FECHA ha cambiado de valor.

¿Ha cambiado el campo? ( FECHA, HA_CAMBIADO )
If ( HA_CAMBIADO )
    Mensaje ( "No es posible cambiar la fecha", Información, 10, "Aviso" )

¿Ya existe en alguno de sus índices de clave única?

Comando de instrucción del grupo Ficha y campos, que partiendo de una ficha de una tabla comprueba si existe alguna duplicidad en cualquier índice de clave única declarado en la misma.

Origen de la instrucción: ficha de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

Identificador de variable local booleana de retorno de ok

Variable local de tipo booleano en la que se retornará si hay duplicidad por algún índice de clave única (1) o no (0).

Identificador de variable local alfabética de retorno del mensaje

Variable local de tipo alfabético donde se retornará, en caso de existir duplicidad, la lista de índices por los que existe.

Funcionalidad

Partiendo de una ficha de una tabla comprueba si existe alguna duplicidad en cualquier índice de clave única declarado en la misma, devolviendo en una Variable local si se ha encontrado o no duplicidad y devolviendo en otra la lista de los índices de clave única por los que se ha detectado duplicidad.

Comentarios

Las variables locales de retorno podrán ser tanto unas declaradas previamente como nuevas.

Será el propio sistema quien se encargue de componer la clave adecuada a cada índice de clave única de la tabla en base al contenido de la ficha en curso.

Debemos saber que cuando se da de alta o se modifmica un registro a través de un formulario el sistema, antes de grabar la ficha, comprobará que no se produzca duplicidad de clave en todos los índices de clave única de la tabla; pero en altas realizadas a través de proceso el sistema solamente comprobará la clave primaria, es decir, el ID, el campo clave de la tabla. En ese caso, sería recomendable para evitar errores de integridad, comprobar el resto de los índices de clave única en los eventos de tabla previos al alta y a la modificación de la ficha por medio de este comando.

En los eventos, para cancelar el alta o la modificación de la ficha en caso de producirse una duplicidad de clave se usará el comando de instrucción Set retorno proceso = NO.

Ejemplo

Comprobamos si existe alguna duplicidad en los índices de clave única de los campos del registro en curso mostrando un mensaje indicando el índice duplicado.

¿Ya existe en alguno de sus índices de clave única? ( EXISTE, MENSAJE )
If ( EXISTE )
    Mensaje ( "Registro existente en el índice : " + MENSAJE, Información, 10, "Aviso" )
    Set retorno proceso = NO

¿Ya existe en el índice?

Comando de instrucción del grupo Ficha y campos que permite comprobar si en un índice de clave única existe una clave concreta.

Origen de la instrucción: ficha de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

Identificador de índice

Identificador del índice de clave única a consultar.

Identificador de variable local booleana de retorno de ok

Variable local de tipo booleano en la que se guardará si la clave ya existe (1) o no (0).

Funcionalidad

Esta comando de instrucción devuelve, en una variable local del proceso, el resultado de comprobar si en el índice de clave única identificado ya existe la clave actual.

Comentarios

El comando compondrá la clave adecuada al índice en el que se realiza la consulta en base al contenido de la ficha en curso. El programador no tiene que ocuparse de ello.

Cuando se da de alta o se modifica un registro a través de un formulario el sistema, antes de grabar la ficha, comprobará que no se produzca duplicidad de clave en todos los índices de clave única de la tabla; pero en altas a través de proceso el sistema solamente comprueba la clave primaria, es decir, el ID, el campo clave de la tabla. En ese caso, sería recomendable para evitar errores de integridad, comprobar el resto de los índices de clave única en los eventos de tabla previos al alta y a la modificación de la ficha por medio de este comando. En los eventos, para cancelar el alta o la modificación de la ficha en caso de producirse una duplicidad de clave se usará el comando de instrucción Set retorno proceso = NO.

La variable local de retorno deberá ser de tipo booleano y podrá ser tanto una declarada previamente como una nueva.

Ejemplo

Comprobamos si en la tabla de abreviaturas ya existe en el índice IDENTIFICADOR el valor del campo identificador que estamos dando de alta en el formulario. Cancelando el alta del registro usando la instrucción Set retorno de proceso = No.

¿Ya existe en el índice? ( IDENTIFICADOR, EXISTE )
If ( EXISTE )
    Mensaje ( "El identificador ya existe", Información, 10, "Aviso" )
    Set retorno proceso = NO

Calcula campos dependientes

Comando de instrucción del grupo Ficha y campos que fuerza el recálculo de todos los contenidos iniciales de una ficha.

Origen de la instrucción: ficha de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

No tiene.

Funcionalidad

Fuerza el recálculo de los contenidos iniciales de aquellos campos de una ficha que usan otros campos, pero no contenidos iniciales que no usen campos, por ejemplo, que usen únicamente una función, una constante, una variable, etc.

Comentarios

Tiene sentido utilizarlo solamente si hemos usado previamente en el proceso el comando modificar campo solamente ya que si usamos el comando modificar campo ya implica el cálculo de campos dependientes.

Ejemplo

Cargamos las líneas de pedidos de la tabla LIN_G modificando el campo CNT (Cantidad) multiplicándolo por 2, calculando los campos dependientes al final de la modificación forzando el cálculo de campos con contenidos iniciales.

Cargar lista ( LIN_G@ejemplo_dat, ID, , , ,  )
    Recorrer lista lectura/escritura
        Modificar campo solamente ( CNT, #CNT * 2 )
        Calcula campos dependientes

Comprobar fórmula dinámica

Comando de instrucción del grupo Ficha y campos que permite verificar si la fórmula escrita por un usuario en un campo de tipo fórmula dinámica tiene o no errores de sintaxis.

Origen de la instrucción: ficha de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

Identificador de campo

Campo de tipo fórmula dinámica que se desea verificar.

Identificador de variable local booleana de retorno ok

Variable local del proceso, de tipo booleano, donde se retornará si la fórmula contiene o no errores.

Identificador de variable local alfabética de retorno de mensaje de error

Variable local del proceso, de tipo alfabético, donde se atrapará el mensaje de error.

Funcionalidad

Verificar si la fórmula escrita por un usuario en un campo de tipo fórmula dinámica tiene o no errores de sintaxis y, en caso de tenerlos, captura el mensaje descriptivo del error.

Comentarios

Si la variable de retorno ok devuelve un 1 querrá decir que la fórmula no contiene errores de sintaxis y un 0 si los contiene. En caso de contener errores de sintaxis, el mensaje del error será almacenado en la variable local alfabética de retorno de mensaje de error.

Las variables podrán ser variables locales del proceso declaradas previamente o pueden ser nuevas.

Si en un proceso queremos tener acceso a la fórmula contenida en un campo de tipo fórmula dinámica y no al resultado de la misma usaremos el comando de instrucción de proceso Get campo.

Ejemplo

Si incluimos en la tabla PED_G (Pedidos) un campo de tipo objeto fórmula, podremos en el formulario de edición correspondiente a través de un control de edición fórmula comprobar si el contenido que estamos poniendo como fórmula es correcto o no.

En las instrucciones del ejemplo se evalúa el campo FORMULA_DINAMICA y se informa mediante un mensaje si es correcta o incorrecta la fórmula.

Comprobar fórmula dinámica ( FORMULA_DINAMICA, CORRECTA, MENSAJE )
If ( CORRECTA )
    Mensaje ( "La fórmula es correcta", Información, 10, "Aviso" )
Else
    Mensaje ( "La fórmula es incorrecta", Información, 10, "Aviso" )

Convertir base64 a campo objeto

Comando de instrucción de proceso que convierte una cadena en base64 a un campo de tipo objeto.

Origen de la instrucción: ficha de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

Fórmula de dato

Expresión de tipo fórmula con la cadena en formato base64.

Identificador de campo objeto

Identificador del campo de tipo objeto donde se quiere guardar el resultado. Debe ser un campo de tipo objeto dibujo o de tipo objeto binario.

Extensión del formato de imagen (opcional)

Este parámetro es opcional y sólo deberá usarse en el caso de que el campo de tipo objeto sea objeto dibujo, en ese caso debemos indicar la extensión en origen de la imagen a convertir.

Los formatos de imagen que pueden ser importados son:

  • BMP

  • GIF

  • JPG

  • JPEG

  • PNG

  • PBM

  • PGM

  • PPM

  • XBM

  • XPM

Funcionalidad

Este comando de instrucción permite convertir una cadena en base64 en un campo de tipo objeto (dibujo o binario).

Comentarios

Este comando usa la codificación Base64URL, que se utiliza principalmente en URL y en identificadores de objetos JSON. Este tipo de codificación tiene la características de que Modifica los caracteres '+' y '/' por '-' y '_', respectivamente, para evitar problemas con los navegadores y protocolos web que interpretan de manera especial los caracteres '+' y '/'.*

Ejemplo

En una variable local llamada PDF_BASE64 tenemos una archivo en formato base64 y vamos a guardarla en el campo objeto binario de una tabla llamado BIN:

Convertir base64 a campo objeto ( PDF_BASE64, BIN, )

Convertir campo objeto a base64

Comando de instrucción de proceso que convierte un campo de tipo objeto a base64.

Origen de la instrucción: ficha de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

Identificador de campo objeto

Identificador del campo de tipo objeto que se quiere convertir a base64. Debe ser un campo de tipo objeto dibujo o de tipo objeto binario.

Identificador de variable local alfabética de retorno

Identificador de una variable local donde se retornará la cadena resultante de convertir el campo objeto a base64.

Extensión del formato de imagen (opcional)

Este parámetro es opcional y sólo podrá usarse en el caso de que el campo de tipo objeto sea objeto dibujo. Nos permite identificar la extensión que tiene la imagen a convertir a base64.

Los formatos de imagen disponibles son:

  • BMP

  • JPG

  • JPEG

  • PNG

  • PPM

  • XBM

  • XPM

Funcionalidad

Este comando de instrucción de proceso permite convertir un campo de tipo objeto (dibujo o binario) a base64.

Ejemplo

Vamos a convertir un campo objeto dibujo (IMG) a base64, dejando el resultado en una variable local alfabética llamada IMG_BASE64 con formato jpg:

Convertir campo objeto a base64 ( IMG, IMG_BASE64, "jpg" )

Exportar binario

Comando de instrucción del grupo Ficha y campos que extrae un archivo almacenado en un campo de tipo objeto binario y lo exporta a disco.

Origen de la instrucción: ficha de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

Identificador de campo

Campo de la tabla en curso de tipo objeto binario que se desea exportar.

Fórmula senda

Expresión de tipo fórmula con la especificación de la vía de acceso al fichero donde se va a exportar el contenido del campo.

Identificador de variable local booleana de retorno ok

Variable local del proceso donde se retornará si el campo ha sido exportado (1) o no (0).

Funcionalidad

Extrae un archivo almacenado en un campo de tipo objeto binario y lo exporta a disco.

Comentarios

Para facilitar la especificación de la fórmula de la senda podremos hacer uso del asistente para edición de fórmulas.

La senda deberá ser completa (unidad, estructura de directorios, nombre del archivo y extensión).

Cada elemento de la senda irá separado por el carácter “/”. Ejemplo: “c:/Archivos/documentos/documento.doc”.

Para la especificación de la senda podremos hacer uso de funciones de fórmula de directorios tales como homePath, rootPath o tempPath.

La variable local de retorno ok podrá ser tanto una local al proceso declarada previamente como una nueva.

Ejemplo

En la tabla CLT_T (Clientes) disponemos de un campo de tipo objeto binario para poder incorporar en él algún tipo de fichero, podemos exportar su contenido a disco para que sea ejecutado por el programa encargado de ejecutar los ficheros según la extensión del mismo por el sistema operativo.

En este ejemplo se exporta el contenido del campo objeto binario DOCUMENTO a la caché del cliente con el texto 'Documento' seguido del número de registro de la tabla. En caso de ser exportado de forma incorrecta se muestra el mensaje correspondiente y, en el caso contrario es ejecutado el documento.

Exportar binario ( DOCUMENTO, sysCacheClientPath + "Documento" + #ID + ".pdf", EXPORTADO )
If ( ! EXPORTADO )
    Mensaje ( "Error en la exportación", Información, 10, "Error" )
Else
    Ejecutar documento ( "file:///" + sysCacheClientPath + "Documento" + #ID + ".pdf",  )

Exportar dibujo

Comando de instrucción del grupo Ficha y campos que exporta a disco una imagen almacenada en un campo de tipo objeto dibujo.

Origen de la instrucción: ficha de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

Identificador de campo

Campo de la tabla en curso de tipo objeto dibujo que se desea exportar.

Fórmula senda

Expresión de tipo fórmula con la especificación de la vía de acceso al fichero donde se va a exportar el contenido del campo.

Identificador de variable local booleana de retorno ok

Variable local del proceso donde se retornará si el campo ha sido exportado (1) o no (0).

Funcionalidad

Extrae una imagen almacenada en un campo de tipo objeto dibujo y la exporta a disco, retornando en una variable local del proceso si el archivo ha sido o no generado.

Comentarios

Para facilitar la especificación de la fórmula de la senda podremos hacer uso del asistente para edición de fórmulas.

La senda deberá ser completa (unidad, estructura de directorios, nombre del archivo y extensión).

Cada elemento de la senda irá separado por el carácter “/”. Ejemplo: “c:/Archivos/documentos/img.png”.

Para la especificación de la senda podremos hacer uso de funciones de fórmula de de directorios tales como homePath, rootPath o tempPath.

Si bien en Velneo las imágenes internamente son guardadas en formato jpg, se podrá exportar en los formatos siguientes:

  • bmp (Windows bitmap)

  • jpeg/jpg (Joint Photographic Experts Group)

  • pbm (Portable Bitmap Format)

  • pgm (Portable Graymap Format)

  • png (Portable Network Graphics)

  • ppm (Portable Pixmap Format)

La variable local de retorno ok podrá ser tanto una local al proceso declarada previamente como una nueva.

Ejemplo

En la tabla CLT_T (Clientes) disponemos de un campo de tipo objeto dibujo donde podemos incorporar una foto.

En este ejemplo se exporta el contenido del campo objeto dibujo IMG a la caché del cliente con el texto 'Foto' seguido del numero de registro de la tabla. En caso de ser exportado de forma incorrecta se muestra el mensaje correspondiente y, en el caso contrario es ejecutado el documento.

Exportar dibujo ( IMG, sysCacheClientPath + "Foto" + #ID + ".jpg", EXPORTADO )
If ( ! EXPORTADO )
    Mensaje ( "Error en la exportación", Información, 10, "Error" )
Else
    Ejecutar documento ( "file:///" + sysCacheClientPath + "Foto" + #ID + ".jpg",  )

Exportar texto

Comando de instrucción del grupo Ficha y campos que exporta a disco el contenido de un campo de tipo objeto texto u objeto texto enriquecido.

Origen de la instrucción: ficha de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

Identificador de campo

Campo de la tabla en curso campo de tipo objeto texto u objeto texto enriquecido que se desea exportar.

Fórmula senda

Expresión de tipo fórmula con la especificación de la vía de acceso al fichero donde se va a exportar el contenido del campo.

Identificador de variable local booleana de retorno ok

Variable local del proceso donde se retornará si el campo ha sido exportado (1) o no (0).

Funcionalidad

Genera un fichero en disco a partir del contenido de un campo de tipo objeto texto u objeto texto enriquecido, retornando en una variable local del proceso si el archivo ha sido o no generado.

Comentarios

Para facilitar la especificación de la fórmula de la senda podremos hacer uso del asistente para edición de fórmulas.

La senda deberá ser completa (unidad, estructura de directorios, nombre del archivo y extensión).

Cada elemento de la senda irá separado por el carácter “/”. Ejemplo: “c:/Archivos/documentos/texto.txt”.

Para la especificación de la senda podremos hacer uso de funciones de fórmula de de directorios tales como homePath, rootPath o tempPath.

Si el campo a exportar es de tipo texto el contenido del campo será exportado como texto plano; si es de tipo texto enriquecido, lo exportará a html.

La variable local de retorno ok podrá ser tanto una local al proceso declarada previamente como una nueva.

El texto será exportado usando el codec del sistema operativo donde se ejecute el proceso. Por ejemplo, si es Windows, lo exportará en formato ANSI.

Ejemplo

En este ejemplo se exporta el contenido del campo objeto texto OBS a la caché del cliente con el texto 'Observaciones' seguido del numero de registro de la tabla. En caso de ser exportado de forma incorrecta se muestra el mensaje correspondiente y, en el caso contrario es ejecutado el documento.

Exportar texto ( OBS, sysCacheClientPath + "Observaciones" + #ID + ".txt", EXPORTADO )
If ( ! EXPORTADO )
    Mensaje ( "Error en la exportación", Información, 10, "Error" )
Else
    Ejecutar documento ( "file:///" + sysCacheClientPath + "Observaciones" + #ID +".txt",  )

Get atributos de dibujo

Comando de instrucción del grupo Ficha y campos que permite obtener los atributos de una imagen almacenada en un campo de tipo objeto dibujo de un registro de una tabla.

Origen de la instrucción: ficha de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

Identificador de campo objeto dibujo

Identificador de un campo de tipo objeto dibujo de la tabla de origen de la línea del proceso. Se abrirá una lista desplegable que solamente mostrará los campos de este tipo que existan en la tabla origen de la línea del proceso.

Identificador de variable local numérica de retorno de dimensión x en píxels

Variable local del proceso, de tipo numérico, donde se retornará el ancho de la imagen en píxels.

Identificador de variable local numérica de retorno de dimensión y en píxels

Variable local del proceso, de tipo numérico, donde se retornará la altura de la imagen en píxels.

Identificador de variable local numérica de retorno de tamaño en bytes

Variable local del proceso, de tipo numérico, donde se retornará el tamaño de la imagen en bytes.

Funcionalidad

Este comando devuelve los atributos (alto, ancho y tamaño) de una imagen almacenada en un campo de tipo objeto dibujo de un registro de una tabla.

Comentarios

Las variables locales de retorno de sus parámetros podrán ser tanto variables ya declaradas previamente como nuevas.

Las imágenes internamente son almacenadas con compresión JPG al 100% de calidad.

Ejemplo

Mostramos los atributos del campo IMG (Foto) de la tabla indicando sus atributos mediante mensajes mostrando los contenidos de las variables locales PIXELS_X, PIXELS_Y, y TAMAÑO.

Get atributos de dibujo ( IMG, PIXELS_X, PIXELS_Y, TAMAÑO )
Mensaje ( "Atributos dibujo =>  Pixels X: " + PIXELS_X , Información, ,  )
Mensaje ( "Atributos dibujo =>   Pixels Y: " + PIXELS_Y , Información, ,  )
Mensaje ( "Atributos dibujo =>  Tamaño: " + TAMAÑO + " en bytes", Información, ,  )

Get campo

Comando de instrucción del grupo Ficha y campos que permite obtener el contenido de un campo de la ficha en curso y guardarlo en una variable local del proceso.

Origen de la instrucción: ficha de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

Identificador de campo

Identificador del campo cuyo contenido queremos obtener.

Identificador de variable local de retorno

Identificador de la variable donde se retornará el contenido del campo.

Funcionalidad

Permite obtener el contenido de un campo de la ficha en curso y guardarlo en una variable local del proceso.

Comentarios

La variable de retorno podrá ser tanto una declarada previamente en el proceso como una nueva. Si la creamos nueva el sistema la creará de tipo alfabético.

Para leer el contenido de un campo también podríamos usar el comando Set, la diferencia entre usar uno y otro radica solamente en el caso de que el campo a leer sea de tipo fórmula dinámica; Set devolverá el resultado de la fórmula y Get campo devolverá la fórmula.

Ejemplo

Leemos el contenido del campo NAME de la tabla en curso de clientes, guardamos su contenido en la variable local NOMBRE y mostramos su contenido mediante un mensaje.

Get campo ( NAME, NOMBRE )
Mensaje ( "Nombre del cliente: " + NOMBRE, Información, 30, "Nombres de campos" )

Importar binario

Comando de instrucción del grupo Ficha y campos que permite importar cualquier tipo de archivo en un campo de tipo objeto binario.

Origen de la instrucción: Ficha de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

Identificador de campo

Campo de la tabla en curso de tipo objeto binario en el que se desea importar el fichero.

Fórmula senda

Expresión de tipo fórmula con la especificación de la vía de acceso al fichero a importar. Para facilitar la especificación de la fórmula de la senda podremos hacer uso del asistente para edición de fórmulas.

Identificador de variable local booleana de retorno ok

Variable local del proceso donde se retornará si el campo ha sido importado (1) o no (0).

Funcionalidad

Importa un archivo indicado en sus parámetros en un campo de tipo objeto binario de la tabla en curso.

Comentarios

La senda deberá ser completa (unidad, estructura de directorios, nombre del archivo y extensión).

Cada elemento de la senda irá separado por el carácter "/". Ejemplo: "c:/Archivos/documentos/documento.doc".

Para la especificación de la senda podremos hacer uso de funciones de fórmula de de directorios tales como homePath, rootPath o tempPath.

Si es el usuario final quien ha de seleccionar el fichero a importar, podremos hacer uso del comando de instrucción Ventana de selección de fichero.

La variable local de retorno ok podrá ser tanto una local al proceso declarada previamente como una nueva.

Ejemplo

Seleccionamos el fichero que deseamos importar como DOCUMENTO en el campo DOCUMENTO de la tabla y lo importamos con 'Importar binario'.

Usamos la variable local IMP_OK para comprobar que el fichero se importó al campo de forma correcta.

Ventana de selección de fichero ( SENDA_FICHERO, SEL_OK, "*.*", homePath() )
Importar binario ( DOCUMENTO, SENDA_FICHERO, IMP_OK )
If ( ! IMP_OK )
    Mensaje ( "No se importó el fichero", Información, ,  )
    Finalizar proceso

Importar dibujo

Comando de instrucción del grupo Ficha y campos que importa un archivo de tipo imagen en un campo de tipo objeto dibujo.

Origen de la instrucción: ficha de la tabla en curso. Destino del subproceso: ninguno.

Parámetros

Identificador de campo

Campo de la tabla en curso de tipo objeto dibujo en el que se desea importar la imagen.

Fórmula senda

Expresión de tipo fórmula con la especificación de la vía de acceso al fichero a importar.

Identificador de variable local booleana de retorno ok

Variable local del proceso donde se retornará si el fichero ha sido importado (1) o no (0).

Funcionalidad

Importa un fichero de tipo imagen en disco en un campo de tipo objeto dibujo, retornando en una variable local del proceso si el archivo ha sido o no importado.

Comentarios

Para facilitar la especificación de la fórmula de la senda podremos hacer uso del asistente para edición de fórmulas.

La senda deberá ser completa (unidad, estructura de directorios, nombre del archivo y extensión).

Cada elemento de la senda irá separado por el carácter “/”. Ejemplo: “c:/Archivos/documentos/img.png”.

Para la especificación de la senda podremos hacer uso de funciones de fórmula de de directorios tales como homePath, rootPath o tempPath.

Si es el usuario quien ha de indicar el archivo a importar podremos hacer uso del comando Ventana de selección de fichero.

La imagen importada, sea del tipo que sea, internamente será guardada como jpg. Se podrán importar imágenes de los formatos siguientes:

  • bmp (Windows bitmap)

  • gif (Graphics Interchange Format)

  • jpeg/jpg (Joint Photographic Experts Group)

  • pbm (Portable Bitmap Format)

  • pgm (Portable Graymap Format)

  • png (Portable Network Graphics)

  • ppm (Portable Pixmap Format)

La variable local de retorno ok podrá ser tanto una local al proceso declarada previamente como una nueva.

Ejemplo

Importamos el fichero dibujo.png al campo IMG dejando el resultado de la importación en la variable IMP_OK.

Set ( DIBUJO, "C:\dibujo.png" )
Importar dibujo ( IMG, DIBUJO, IMP_OK )

Importar texto

Comando de instrucción del grupo Ficha y campos que importa el contenido de un fichero de texto en un campo de tipo objeto texto u objeto texto enriquecido.

Origen de la instrucción: ficha de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

Identificador de campo

Campo de la tabla en curso de tipo objeto texto u objeto texto enriquecido en el que se desea importar el archivo de texto.

Fórmula senda

Expresión de tipo fórmula con la especificación de la vía de acceso al fichero a importar.

Identificador de variable local booleana de retorno ok

Variable local del proceso donde se retornará si el archivo ha sido importado (1) o no (0).

Funcionalidad

Importa un archivo de texto en un campo de tipo objeto texto u objeto texto enriquecido, retornando en una variable local del proceso si el archivo ha sido o no importado.

Comentarios

Para facilitar la especificación de la fórmula de la senda podremos hacer uso del asistente para edición de fórmulas.

La senda deberá ser completa (unidad, estructura de directorios, nombre del archivo y extensión).

Cada elemento de la senda irá separado por el carácter “/”. Ejemplo: “c:/Archivos/documentos/texto.txt”.

Para la especificación de la senda podremos hacer uso de funciones de fórmula de de directorios tales como homePath, rootPath o tempPath.

Si el campo de destino es de tipo texto el fichero de texto a importar deberá ser contener texto plano; si es de tipo texto enriquecido, el archivo de texto a importar podrá tener tanto formato de texto plano como formato html.

Si ha de ser el usuario final quien deba indicar el fichero a importar, podremos hacer uso del comando Ventana de selección de fichero.

La variable local de retorno ok podrá ser tanto una local al proceso declarada previamente como una nueva.

Ejemplo

Seleccionamos el fichero que deseamos importar como TEXTO en el campo OBS de la tabla y lo importamos con 'Importar texto'.

Usamos la variable local SEL_OK para comprobar si se seleccionó algún fichero partiendo de la ruta homPath().

Usamos la variable local IMP_OK para comprobar que el fichero se importó al campo de forma correcta.

En caso de no haber seleccionado de forma correcta el fichero o en caso de no haber sido posible la importación del fichero, se muestra un mensaje y posteriormente se finaliza el proceso.

Ventana de selección de fichero ( SENDA_FICHERO, SEL_OK, "*.*", homePath() )
If ( ! SEL_OK )
    Mensaje ( "Canceló la selección de fichero", Información, ,  )
    Finalizar proceso
Importar texto ( OBS, SENDA_FICHERO, IMP_OK )
If ( ! IMP_OK )
    Mensaje ( "No se importó el fichero", Información, ,  )
    Finalizar proceso

Limpiar campo objeto

Comando de instrucción del grupo Ficha y campos que limpia el contenido de un campo de tipo objeto.

Origen de la instrucción: ficha de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

Identificador de campo objeto

Identificador del campo de tipo objeto a limpiar.

Funcionalidad

Este comando de instrucción limpia el contenido de un campo de tipo objeto, es decir, lo borra del contenedor y en el campo elimina la referencia al mismo, pero no borra el registro.

Comentarios

Hay que tener en cuenta que los campos de tipo objeto son almacenados en un contenedor aparte de los datos. El nombre de este fichero será el mismo de la tabla y con la extensión CND. En el fichero de datos lo que se guarda es la dirección donde está el objeto en el contenedor.

Aunque los campos objeto se almacenan en el contenedor y no en el fichero de datos, si borramos el registro, el sistema borrará también en el contenedor los campos objeto del mismo. No será necesario que lo hagamos nosotros.

Ejemplo

Limpiamos los contenidos de distintos tipos de campos de la tabla en curso.

Rem ( Limpiamos el contenido del campo OBS de tipo objeto texto )
Limpiar campo objeto ( OBS )
Rem ( Limpiamos el contenido del campo DOCUMENTO de tipo objeto binario )
Limpiar campo objeto ( DOCUMENTO )
Rem ( Limpiamos el contenido del campo IMG de tipo objeto imagen )
Limpiar campo objeto ( IMG )

Modificar campo

Comando de instrucción del grupo Ficha y campos que modifica el contenido de un campo y dispara el recálculo de los contenidos iniciales dependientes del mismo.

Origen de la instrucción: ficha de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

Identificador de campo

Identificador del campo cuyo contenido se desea modificar.

Fórmula de dato

Establece el nuevo contenido del campo. Se trata de una expresión de tipo fórmula.

Funcionalidad

Modifica el contenido del campo indicado en el primer parámetro, con el resultado de la fórmula establecida en el segundo parámetro y dispara los contenidos iniciales que dependan del mismo.

Comentarios

Este comando no genera transacción por sí mismo; esto quiere decir que el uso de este comando modifica el contenido del campo pero no graba el cambio en disco.

En un proceso, para que el nuevo valor del campo sea guardado en disco, la ficha deberá haber sido abierta previamente en modo lectura/escritura, por ejemplo, mediante el uso de comandos del tipo Modificar ficha seleccionada, Recorrer lista lectura/escritura, etc.

Para facilitar la creación de la fórmula del segundo parámetro podremos hacer uso del asistente para edición de fórmulas.

Podremos usar este comando para limpiar el contenido de un campo. Si se trata de campos alfabéticos o de tipo fecha, en la fórmula escribiremos: "". En numéricos, un 0 y si se trata de campos objeto, entonces no usaremos este comando sino el comando limpiar campo objeto.

Este comando siempre desencadenará el recálculo de contenidos iniciales de campos dependientes, tal y como se explica en el capítulo dedicado a los campos, aunque el valor que se asigne al campo sea el mismo que ya tenía. Esto es muy importante tenerlo en cuenta a la hora de programar procesos que importación masiva de registros o de transacciones que en las que se vaya a realizar una modificación masiva de fichas, en cuyo caso podría usarse el comando de instrucción modificar campo solamente; ya que no dispara el recálculo de contenidos iniciales dependientes.

El comportamiento de los contenidos iniciales es distinto en los formularios. Si un usuario modifica el contenido de un control asignándole el mismo valor que ya tenía el campo, existe una optimización para que no se modifiquen los campos dependientes si no hay cambios. En formularios, por tanto, solo se dispararán los contenidos iniciales dependientes cuando el usuario cambie el contenido del campo.

Si queremos modificar el valor de un campo en un trigger de tabla, la modificación debemos hacerla en el evento anterior (al alta o a la modificación de la ficha).

Si desde un trigger se ejecuta un proceso de Velneo con origen ficha lanzado con el comando de instrucción ejecutar proceso, la ficha recibida es la que tiene el trigger en memoria, recibiendo los cambios realizados en el trigger anterior al alta o modificación. Si realizamos modificar campo en el proceso se cambia correctamente la ficha en memoria que tras finalizar el proceso es recibida por el trigger que puede continuar con todos los cambios realizados.

Sin embargo, si usamos para ejecutar el proceso el comando de instrucción disparar objeto creando un manejador de objeto el funcionamiento no es el mismo ya que el proceso recibe una ficha diferente a la que usa el trigger en memoria y los cambios que se realicen con el comando de instrucción modificar campo no son funcionales.

Por lo tanto, si queremos modificar campos en procesos de Velneo lanzados desde triggers de tabla, tendremos que hacerlo siempre con el comando de instrucción de proceso ejecutar proceso.

Si desde una línea de un proceso de Velneo con origen ficha ejecutamos en primer plano un proceso que modifica campo, al retonar al proceso llamador, la modificación del campo se conservará, ya que se está trabajando en memoria sobre la misma ficha. Pero si intetamos hacer eso mismo dsde un proceso JavaScript, no. El motivo es que los procesos JavaScript acceden al registro por la posición en disco, es decir, lee el registro de la base de datos y no de la ficha en memoria que es sobre lo que trabaja el subproceso.

Si desde una línea de un proceso de Velneo con origen ficha ejecutamos en tercer plano un proceso que modifica campo, al retornar al proceso llamador la modificación del campo no se conservará.

Ejemplo

Modificamos todos los registros de las lineas de pedidos de la tabla (LIN_G) modificando el campo booleano SRV (Servido) a 1.

Cargar lista ( LIN_G@ejemplo_dat, ID, , , ,  )
    Recorrer lista lectura/escritura
        Modificar campo ( SRV, 1)

Modificar campo solamente

Comando de instrucción del grupo Ficha y campos que modifica el contenido de un campo sin disparar contenidos iniciales dependientes.

Origen de la instrucción: ficha de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

Identificador de campo

Identificador del campo cuyo contenido se desea modificar.

Fórmula de dato

Establece el nuevo contenido del campo. Se trata de una expresión de tipo fórmula.

Funcionalidad

Modifica el contenido del campo indicado en el primer parámetro, con el resultado de la fórmula establecida en el segundo parámetro y no dispara contenidos iniciales que dependan del mismo.

Comentarios

Este comando no genera transacción por sí mismo; esto quiere decir que el uso de este comando modifica el contenido del campo pero no graba el cambio en disco.

En un proceso, para que el nuevo valor del campo sea guardado en disco, la ficha deberá haber sido abierta previamente en modo lectura/escritura, por ejemplo, mediante el uso de comandos del tipo Modificar ficha seleccionada, Recorrer lista lectura/escritura, etc.

Para facilitar la creación de la fórmula del segundo parámetro podremos hacer uso del asistente para edición de fórmulas.

Si queremos dejar vacío el contenido de un campo de tipo fecha, en la fórmula escribiremos: "".

Este comando no desencadenará el recálculo de contenidos iniciales de campos dependientes (ver el capítulo dedicado a los campos.

Este comando es muy aconsejable, por ejemplo, en la importación masiva de registros, en las que habitualmente todos los campos son asignados en la importación, no siendo necesario, por tanto, forzar el recálculo de contenidos iniciales; lo que mejorará notablemente los tiempos de ejecución de los procesos.

En el caso de que en el proceso nos interese disparar los contenidos iniciales dependientes, entonces podremos hacer uso del campo calcula campos dependientes.

Si queremos modificar el valor de un campo en un trigger de tabla, la modificación debemos hacerla en el evento anterior (al alta o a la modificación de la ficha).

Si desde un trigger se ejecuta un proceso de Velneo con origen ficha lanzado con el comando de instrucción ejecutar proceso, la ficha recibida es la que tiene el trigger en memoria, recibiendo los cambios realizados en el trigger anterior al alta o modificación. Si realizamos modificar campo en el proceso se cambia correctamente la ficha en memoria que tras finalizar el proceso es recibida por el trigger que puede continuar con todos los cambios realizados.

Sin embargo, si usamos para ejecutar el proceso el comando de instrucción disparar objeto creando un manejador de objeto el funcionamiento no es el mismo ya que el proceso recibe una ficha diferente a la que usa el trigger en memoria y los cambios que se realicen con el comando de instrucción modificar campo no son funcionales.

Por lo tanto, si queremos modificar campos en procesos de Velneo lanzados desde triggers de tabla, tendremos que hacerlo siempre con el comando de instrucción de proceso ejecutar proceso.

Si desde una línea de un proceso de Velneo con origen ficha ejecutamos en primer plano un proceso que modifica campo, al retonar al proceso llamador, la modificación del campo se conservará, ya que se está trabajando en memoria sobre la misma ficha. Pero si intetamos hacer eso mismo dsde un proceso JavaScript, no. El motivo es que los procesos JavaScript acceden al registro por la posición en disco, es decir, lee el registro de la base de datos y no de la ficha en memoria que es sobre lo que trabaja el subproceso.

Si desde una línea de un proceso de Velneo con origen ficha ejecutamos en tercer plano un proceso que modifica campo, al retornar al proceso llamador la modificación del campo no se conservará.

Este comando de instrucción de proceso no es funcional para campos de tipo objeto texto, objeto texto enriquecido ni objeto fórmula. Estos deberán ser gestionados con el comando de instrucción de proceso modificar campo.

Ejemplo

Cargamos las líneas de pedidos de la tabla LIN_G modificando los campos y calculando los campos dependientes al final de la modificación forzando el cálculo de campos con contenidos iniciales.

Cargar lista ( LIN_G@ejemplo_dat, ID, , , ,  )
    Recorrer lista lectura/escritura
        Modificar campo solamente ( CNT, #CNT * 2 )
        Modificar campo solamente ( PRE, 2575 )
        Modificar campo solamente ( SRV, 1 )
        Modificar campo solamente ( CNT_COL, "4" )
        Calcula campos dependientes

Última actualización