Saltar al contenido principal
Versión: 21 R5 BETA

Campos

Definición​

El área «Definición» de la paleta Inspector configura las propiedades básicas de los campos. Algunas propiedades solo están disponibles cuando se seleccionan determinados tipos de campos.

Color​

Puede asignar un color a cada nombre de campo para distinguir los campos según su función o atributos. Por ejemplo, puede utilizar un color para los campos únicos y otro para los obligatorios. También es posible asignar un color a cada tabla y a cada relación.

Para definir el color de uno o varios campos, selecciónelos y elija un color mediante:

  • el botón Color de la barra de herramientas del editor de Estructura;
  • el comando Color del menú contextual de los campos;
  • la opción Color de la paleta Inspector.

La opción Automático permite aplicar al nombre del campo su color estándar original.

Invisible​

Puede hacer que un campo sea invisible en el entorno Aplicación y para los plug-ins seleccionando la propiedad Invisible. Este atributo oculta el campo al usuario. Un campo invisible no aparece en ningún editor estándar de 4D ni en los cuadros de diálogo del entorno Aplicación. Tampoco puede ser utilizado por los plug-ins. Afecta a los siguientes editores y cuadros de diálogo:

  • todos los editores de Consulta;
  • el editor de ordenación;
  • el editor de etiquetas;
  • los informes rápidos;
  • los cuadros de diálogo de exportación e importación de datos;
  • el editor de fórmulas.

En todos estos lugares, el usuario no puede ver ni elegir el campo. Por ejemplo, no puede elegir un campo invisible para un diseño creado con el editor de etiquetas.

Nota: al utilizar los editores, los usuarios pueden guardar sus especificaciones (por ejemplo, la consulta o la ordenación creadas) en archivos de disco. En ese caso, los campos especificados que posteriormente se declaren invisibles seguirán utilizándose. Además, los usuarios pueden escribir los nombres de campos invisibles en el editor de fórmulas.

Los campos invisibles se muestran en cursiva en la ventana del editor de Estructura.

Único​

Utilice el atributo Único para asegurarse de que cada registro tenga un valor diferente en este campo. Este atributo debe utilizarse para el campo que identifica de forma única cada registro de la tabla. Resulta útil para validar campos que almacenan números de empleado, de seguridad social, de pedido de compra, etc.

El atributo Único impide la duplicación de valores vacíos, al igual que la de cualquier otro valor. Un campo vacío no puede duplicarse en otro registro.

La barra de información del editor de Estructura indica si la propiedad Único está seleccionada para un campo.

En 4D, los campos con el atributo Único deben estar indexados. Una indicación visual señala que se creará un índice (si aún no existe) al seleccionar el atributo Único:

El editor impide eliminar el índice de un campo Único (la opción Ninguno y los comandos de eliminación de índices no están disponibles cuando se selecciona ese campo). Para eliminar el índice de un campo único, primero debe quitar el atributo Único.

Exponer como recurso REST​

Esta opción determina si el campo se expone a las solicitudes REST.

Notas

Rechazar entrada de valores NULL​

Esta propiedad impide almacenar valores NULL. Cuando está seleccionada para un campo, no es posible almacenar en él un valor NULL. Si un campo con este atributo recibe un valor NULL, se genera un error. Esta propiedad de bajo nivel corresponde exactamente al atributo NOT NULL de SQL.

nota

En 4D, los campos también pueden tener el atributo «Obligatorio» (véase más abajo). Los conceptos son similares, pero su alcance es diferente: el atributo «Obligatorio» controla la entrada de datos, mientras que «Rechazar entrada de valores NULL» actúa a nivel del motor de la base de datos.

Mapear valores NULL a valores vacíos​

Esta propiedad unifica el tratamiento de los valores «vacíos» y NULL del campo mediante el lenguaje 4D.

Compatibilidad con ORDA

No se recomienda utilizar esta opción en desarrollos basados en ORDA, donde los valores NULL son totalmente compatibles.

Por razones de compatibilidad, los valores NULL almacenados en las tablas de la base de datos 4D se convierten automáticamente en valores por defecto cuando se manipulan mediante el lenguaje 4D. Por ejemplo, en la siguiente instrucción:

$myTextVar:=[myTable]myTextField

... si el campo myTextField contiene un valor NULL, la variable $myTextVar contendrá "" (cadena vacía). Los valores por defecto dependen del tipo de datos. En cambio, en principio, este mecanismo no se aplica al procesamiento realizado a nivel del motor de base de datos 4D, como las consultas. Por ello, una búsqueda de un valor «vacío» (por ejemplo, $myvalue=0) no encontrará los registros que almacenan NULL, y viceversa. Cuando ambos tipos de valores (valores por defecto y NULL) están presentes en los registros de un mismo campo, algunos procesamientos pueden cambiar o requerir código adicional. Para evitar estos inconvenientes, la opción Mapear valores NULL a valores vacíos permite unificar todo el procesamiento en el lenguaje 4D. Los campos que contienen NULL se consideran sistemáticamente como si contuvieran valores por defecto.

Notas
  • Los campos Alpha con formato UUID que no se generan no se consideran NULL (véase Formato UUID).
  • Esta propiedad se tiene en cuenta a un nivel muy bajo del motor de base de datos. Actúa especialmente sobre el comando Is field value Null.

Autoincremento​

La propiedad Autoincremento genera números de secuencia en la tabla. Se puede utilizar con campos de tipo Integer, Long Integer e Integer 64 bits.

Un campo con esta propiedad se incrementa automáticamente cada vez que se crea un registro en la tabla. El número de secuencia asignado corresponde al «contador interno» de la tabla, mantenido por 4D. También se puede acceder a este contador con los comandos 4D Sequence number y Get database parameter, así como con el marcador #N (véase Valores por defecto).

Los números asignados nunca se reutilizan en la tabla, ni siquiera cuando se eliminan registros. Los números generados durante una transacción cancelada se «pierden». La propiedad Autoincremento corresponde al atributo SQL AUTO_INCREMENT. La etiqueta AUTO INCREMENT también aparece en el área de información SQL del Inspector para los campos que tienen este atributo.

atención

Aunque son únicos en la tabla cuando se generan, NO se recomienda utilizar números autoincrementados para rellenar campos de clave primaria con ID únicos, especialmente si la estructura se utiliza con varios archivos de datos, ya que el contador interno podría desincronizarse. Además, el contador interno de una tabla se puede restablecer mediante el comando SET DATABASE PARAMETER. Para crear ID de registro únicos, se recomienda encarecidamente utilizar UUID, que ofrecen estas ventajas:

  • los UUID generan ID únicos entre todas las tablas y bases de datos;
  • para generar un UUID, puede combinar la opción Auto UUID (véase más abajo) con el comando Generate UUID.

Almacenado en el registro, en el archivo de datos o fuera del archivo de datos​

Este menú solo está disponible para los campos de tipo Text, BLOB, Picture y Object type. Permite definir la ubicación de almacenamiento de los datos del campo.

En el registro​

Los datos se almacenan con cada registro. En general, no debería elegir esta opción para campos que contengan grandes volúmenes de datos. Sin embargo, está seleccionada por defecto para los campos Text, porque este tipo de almacenamiento es necesario para utilizar índices B-Tree «estándar». El menú de selección de índices se oculta cuando los datos Text se almacenan fuera de los registros.

En el archivo de datos​

Los datos se almacenan en el archivo de datos, pero fuera de cada registro. Esta opción está seleccionada por defecto para los campos BLOB y Picture. Para optimizar el funcionamiento de la base de datos con datos voluminosos, puede almacenar textos, imágenes, Blobs y objetos fuera de los registros.

Fuera del archivo de datos​

Los datos se almacenan en archivos separados, fuera del archivo de datos. Esta opción se describe en Almacenamiento externo de datos.

Notas
  • Esta opción solo se aplica a los nuevos registros que se creen posteriormente en la tabla. Si la define para una tabla que ya contiene registros, estos no se modifican y la tabla utiliza un modo mixto de almacenamiento interno y externo. Para aplicar este modo también a los registros existentes, debe compactar los datos con la opción Forzar actualización de los registros.
  • Los datos almacenados fuera del archivo de datos no se gestionan mediante la funcionalidad de cifrado de datos, si está activada.
  • Esta opción no está disponible para los campos de tipo Object.

Tamaño máximo de almacenamiento interno​

Por motivos de optimización, los datos de los campos BLOB, Picture, Text y Object se almacenan por defecto fuera de los registros o del archivo de datos. Por razones de rendimiento, puede ser conveniente forzar el almacenamiento en los registros cuando el tamaño de los datos sea limitado. Este funcionamiento está especialmente optimizado cuando la aplicación gestiona datos BLOB, Picture, texto u objeto de tamaños variables. El valor introducido representa el tamaño en bytes por debajo del cual los datos del campo se almacenarán en el registro. Por ejemplo, si introduce 30 000 para un campo Picture, una imagen de 20 KB se almacenará en el registro y una imagen de 40 KB se guardará en la ubicación definida en los ajustes (en el archivo de datos o fuera de él). El valor por defecto es 0: todos los datos del campo se almacenan fuera de los registros.

Formato UUID​

Esta propiedad está disponible para los campos de tipo Alpha. Indica que el campo almacena identificadores UUID. Los datos almacenados deben respetar el formato UUID (combinación de 32 letras (A-F, a-f) y números (0-9)). Para ello, puede utilizar la propiedad Auto UUID, el comando Generate UUID o cualquier algoritmo personalizado.

Si intenta almacenar en este campo una cadena que no respeta el formato UUID, 4D la convierte automáticamente. La misma operación se aplica al contenido de campos existentes que no son Alpha y se transforman en campos UUID: al cargar los registros, los valores se reformatean y se vuelven a almacenar.

Los campos con formato UUID pueden mostrarse en formularios y siguen siendo editables. Su contenido aparece en mayúsculas. Para mostrar caracteres en minúsculas, debe utilizar una variable.

Notas
  • Los campos con formato UUID no se pueden asociar a índices de palabras clave ni a listas de selección.
  • Puede crear una relación entre dos campos que tengan formato UUID, pero no vincular un campo Alpha estándar con un campo de formato UUID.
  • Un campo UUID inicializado (generado) cuyo valor es NULL devuelve una cadena vacía. Un campo UUID no generado no es NULL y devuelve «000...» (el número de ceros es igual al número de caracteres). La propiedad no se tiene en cuenta para los campos UUID no generados (se muestra «000...»).

Auto UUID​

Esta opción solo está activa cuando se selecciona la propiedad Formato UUID. Permite generar automáticamente un número UUID en el campo.

El número se calcula automáticamente en estos casos:

  • cuando se crea un registro;
  • cuando se carga un registro cuyo campo UUID contiene un valor Null. Esto ocurre especialmente con los registros creados y guardados antes de añadir el campo UUID a la tabla, cuando la opción Mapear valores NULL a valores vacíos no estaba seleccionada.

En todos los casos, es necesario guardar el registro para que el UUID generado automáticamente se almacene en el campo.

nota

Al importar datos, incluso con esta propiedad seleccionada, 4D no genera un número nuevo, sino que utiliza los valores importados (y los transforma cuando es necesario si el formato no es válido). Sin embargo, si el valor del campo importado está vacío, se genera automáticamente un UUID.

Class​

Esta propiedad está disponible para campos de tipo Objeto (en los proyectos 4D únicamente). Permite definir un campo de tipo clase de objeto, mejorando la compleción de código, la verificación de sintaxis y la validación en tiempo de ejecución al escribir código que incluya campos objeto.

Puede introducir cualquier nombre de clase válido en esta propiedad, incluyendo:

  • Clases usuario (por ejemplo, cs.MyClass)
  • Clases 4D integradas (por ejemplo, 4D.File, 4D.Folder)
  • las clases exposed definidas por componentes (por ejemplo, cs.MyComponent.MyClass)

Si introduce un nombre de clase inválido, se activa una advertencia y se rechaza la entrada.

En su código, al asignar un valor a un campo de tipo clase de objeto, 4D verifica que pertenece a la clase declarada. Si no es así o si el objeto no tiene clase, se produce un error. El acceso a atributos desconocidos también provocará errores de sintaxis.

Para recuperar el nombre de la clase asociada en tiempo de ejecución, utilice la propiedad classID, por ejemplo ds.MyTable.MyField.classID.

Entrada de blog relacionada

4D.Vector class​

If you assign 4D.Vector as the class of an Object type field, you define a vector field. Such fields store embessings and can be used to query data using AI features. See the 4D.Vector class documentation to see how to query with vectors.

Note that the 4D Embedding Studio component can help you configuring and updating your 4D.Vector fields.

When you assign 4D.Vector as the class of an Object type field, a specific icon is displayed as field type in the Structure editor: