4D v16.3Tipos de campos 4D |
|||||||||||||||||||||||||
|
4D v16.3
Tipos de campos 4D
Tipos de campos 4D
Es necesario especificar un tipo de campo para cada campo de una tabla. Los tipos de campos afectan la manera como 4D manipula y almacena los datos en los campos y cómo los introduce y muestra en los formularios. Por defecto, 4D aplica el tipo Alfa a los campos que cree. En el momento de la creación del campo, debe modificar este tipo si es necesario. Para modificar el tipo de un campo:
Puede cambiar de tipo de campo en cualquier momento, a menos que el campo tenga una relación o pertenezca a una llave primaria. En este caso, el menú para elegir un tipo de campo queda deshabilitado. Debe eliminar la relación o la llave primaria explícitamente antes de cambiar el tipo de campo. Por defecto, 4D ofrece los siguientes tipos de campos:
(1) Atención, estos tipos de campos sólo son utilizados por el motor SQL de 4D. Si estos campos se utilizan en el lenguaje de 4D, sus valores se convierten internamente en números reales. Nota: el término genérico "cadena" indica el tipo Alfa o Texto, "numérico" indica un tipo Entero, Entero largo, Entero 64 bits, Real o Flotante. Un campo tipo Alfa contiene caracteres alfanuméricos (letras y números), signos de puntuación, y caracteres especiales como el asterisco (*), el signo porcentaje (%), el guión (-) y otros similares. Los campos alfa se utilizan para almacenar información que deba ser tratada como texto y que no exceda los 255 caracteres de longitud. Un campo Alfa puede estar asociado a un índice estándar y/o a un índice de palabras claves. Para mayor información sobre indexación, consulte la sección Crear y modificar índices. Alfa es el tipo de campo más común. Generalmente, se utiliza este campo para nombres, direcciones, números telefónicos, códigos postales, etc. Durante la entrada de datos, un campo Alfa permite cualquier carácter, número, signo de puntuación o carácter especial. Hay dos razones por las cuales utilizar el tipo Alfa para los códigos postales: los campos numéricos no muestran ceros al inicio y algunos códigos postales contienen guiones. La regla general que aplica para elegir entre numérico y Alfa consiste en elegir el campo Alfa a menos que el campo vaya a utilizarse en cálculos numéricos o búsquedas u ordenaciones basadas en valores numéricos. Puede definir la longitud máxima de un campo Alfa entre 1 y 255 caracteres. Puede concatenar la información de dos o más campos Alfa. Por ejemplo, puede colocar el nombre y el apellido de una persona en una misma línea de una etiqueta. Puede hacerlo simplemente utilizando la siguiente línea de código: NombreCompleto:=[Empleados]Nombre+" "+[Empleados]Apellido La variable NombreCompleto puede mostrarse o imprimirse. También puede extraer parte de la información para utilizarla en otro lugar (extracción de una subcadena). La subcadena puede visualizarse o imprimirse. Un campo de tipo Texto es similar a un campo Alfa, excepto por unas pocas diferencias. Un campo Texto puede contener hasta 2 GB de caracteres alfanuméricos. Generalmente, los campos texto se utilizan para almacenar bloques de texto de gran tamaño, tales como comentarios o descripciones. Por razones de optimización, el contenido de un campo Texto se almacena por defecto fuera de los registros (ver “Almacenado en el registro" en la sección Propiedades de los campos). En este caso, el campo no puede asociarse a un índice estándar. Como los campos Alfa, un campo Texto puede asociarse a un índice de palabras claves. Para mayor información sobre indexación, consulte la sección Crear y modificar índices. En un formulario de entrada, un campo Texto puede tener barras de desplazamiento. En un informe impreso, el campo texto puede extenderse tanto como sea necesario para imprimir toda la información, incluso si se extiende por varias páginas. Durante la entrada de datos, los campos Texto ofrecen las características básicas de edición de texto: desplazamiento, ajuste de texto dentro del área definida para visualizar el campo, doble clic para Puede pegar texto en los campos de tipo texto, incluyendo texto de otros procesadores de texto. Nota: otra forma de almacenar texto con un registro es utilizando el plug-in 4D Write. Con 4D Write, puede utilizar diferentes atributos de fuente, alineaciones de párrafo y otras características propias de los procesadores de texto que no están disponibles en campos Texto estándar. Utilice un campo tipo Fecha para almacenar valores de fechas como fechas de inicio, fechas de compra, cumpleaños, etc. Un campo tipo Fecha puede almacenar cualquier valor de fecha (día, mes, año) respetando el formato DD/MM/AAAA entre el año 100 y el año 32 767. Notas:
Este tipo de campo se utiliza para almacenar horas como la hora actual, la hora de una cita, la hora de facturación, etc.). Un campo tipo hora puede almacenar cualquier hora en formato HH:MM:SS. Los campos booleanos contienen valores TRUE o FALSE. Puede definir el formato de un campo booleano como una casilla de selección o un botón radio. Una casilla de selección marcada es verdadero (TRUE); vacía es falso (FALSE). Seleccionar el primer botón radio equivale a tener verdadero (TRUE) y seleccionar el segundo botón equivale a tener falso (FALSE). Nombre los campos booleanos de manera que pueda preguntar “¿El campo nombre es verdadero?”. Esta pregunta es útil al realizar búsquedas porque 4D revisa el valor TRUE y FALSE en un campo booleano. Por ejemplo, puede nombrar un campo “Masculino” en lugar de “Sexo”. Su criterio de búsqueda puede ser escrito como “Masculino es verdadero” en lugar de “Sexo es verdadero”. El tipo de campo Entero se utiliza para almacenar números enteros, es decir, números sin fracciones decimales. Los campos de tipo Entero pueden almacenar números enteros entre -32 768 y 32 767. Utilice el tipo de campo Entero largo para campos que almacenen números enteros muy grandes como para ser almacenados en campos de tipo Entero. Este tipo de campo pueden almacenar números enteros entre ±2,147,483,647. Este tipo de campo puede utilizarse para almacenar números enteros de 8 bytes permitiendo manipular valores enteros de gran tamaño, entre +/- 2E64. Nota: atención, este tipo de campo es utilizado únicamente por el motor SQL de 4D. Si este campo se utiliza en el lenguaje de 4D, su valor se convierte internamente en un número real. Los campos de tipo Real se utilizan para almacenar números reales, es decir números decimales (precio, salarios, gastos, etc.). Los campos reales pueden almacenar todo número en el rango de ±1.7E±308. Este tipo de campo puede utilizarse para almacenar los números de punto flotante. Estos tipos de números permiten almacenar los valores reales sin perder precisión. Note: atención, este tipo de campo es utilizado únicamente por el motor SQL de 4D. Si este campo se utiliza en el lenguaje de 4D, su valor se convierte internamente en un número real. Los campos de tipo Blob (Binary Large Object) almacenan documentos binarios de todo tipo. Puede utilizar un campo de tipo BLOB para los documentos completos en su base (archivos creados por otras aplicaciones, aplicaciones, etc.). Cuando trabaja con un registro que contiene un campo BLOB, todo el BLOB se carga en la memoria. Puede utilizar campos tipo BLOB para almacenar archivos de escritorio dentro de su base de datos. También puede escribir los contenidos de un campo tipo BLOB en un archivo de escritorio. Por ejemplo, puede utilizar un campo tipo BLOB en un sistema de gestión de documentos que almacena documentos en la base y los entrega a los usuarios cuando son solicitados. Utilice los comandos BLOB en el lenguaje 4D para manipular los campos tipo BLOB. Utilice los comandos DOCUMENT TO BLOB y BLOB TO DOCUMENT para leer y escribir documentos desde y hacia camposBLOB. Los comandos COMPRESS BLOB, EXPAND BLOB y BLOB PROPERTIES le permiten trabajar con campos BLOBs comprimidos. Por razones de optimización, el contenido de un campo BLOB se almacena fuera de los registros. Los BLOBs sólo se cargan cuando es necesario, por ejemplo una vez que el registro que se busca ha sido encontrado. El contenido de un campo BLOB no se muestra en pantalla ya que un BLOB puede representar todo tipo de datos. Los campos tipo Imagen se utilizan para almacenar fotografías digitalizadas, diagramas, mapas, e ilustraciones creadas utilizando aplicaciones gráficas. Las imágenes se conservan en su formato nativo. Por razones de optimización, el contenido de un campo Imagen se almacena fuera de los registros. Las imágenes sólo se cargan cuando es necesario, por ejemplo una vez se encuentra el registro buscado. A partir de 4D v13, también puede elegir guardar imágenes fuera del archivo de datos (ver la sección Almacenamiento externo de los datos) 4D puede memorizar un nombre por defecto para cada imagen almacenada en un campo. Esto significa que usted puede definir un nombre de archivo por defecto cuando guarda el contenido de un campo imagen en un archivo disco a través de una exportación usuario o utilizando el comando WRITE PICTURE FILE (cuando pasa una cadena vacía en el parámetro nomArchivo). Si el contenido del campo se copia en una variable o en otro campo, su nombre por defecto también se copia.
Esto se ilustra en la siguiente secuencia:
Los campos objeto almacenan pares atributo/valor de diferente tipo, sin esquemas de datos predefinidos. La estructura de datos almacenada no es necesariamente la misma entre los diferentes registros. Por ejemplo, un campo objeto [Person]Address puede contener atributos diferentes dependiendo de la ciudad, el país, y así sucesivamente: record1= {"street1":"Cotton Treasure Grounds", "street2":"Place Corners", "state":"MD",...} record2= {"street1":"Umber Road", "Number":"28", "state":"MO",...} La estructura de los objetos 4D se basa en el principio estándar de pares "propiedad/valor". La sintaxis de estos objetos se basa en la notación JSON, pero no sigue completamente:
Atención: tenga en cuenta que los nombres de los atributos diferencian entre las mayúsculas y minúsculas. Un campo objeto puede ser hasta de 2 GB. Cuando se trabaja con un registro que contiene un campo objeto, todo el objeto se carga en memoria. Como para campos de tipo texto, imagen o BLOB, los campos objeto pueden ser almacenados en el archivo de datos (con los registros o no), o fuera del archivo de datos; esta opción se trata en la sección Almacenamiento externo de los datos. Utilice los comandos 4D Objetos (Lenguaje) para gestionar los campos objeto. Utilice los comandos OB Get y OB SET para leer y escribir datos desde y hacia campos objeto. También puede almacenar y leer arrays como atributos utilizando los comandos OB SET ARRAY y OB GET ARRAY. Puede utilizar el comando QUERY BY ATTRIBUTE para buscar entre los campos objeto. Como los campos de tipo objeto se basan en texto, su contenido se muestra por defecto en un formulario 4D como texto y formato JSON (ver la sección siguiente). Nota: para trabajar con objetos JSON, puede utilizar los comandos que se encuentran en el tema "JSON". El tipo objeto permite definir los campos dinámicos sin esquema de estructura predefinido. Los campos objeto pueden ser considerados como "definidos por el usuario" o "personalizados". En 4D, tiene que elegir entre los modelos de datos con o sin esquema. En ambos casos, puede ejecutar búsquedas indexadas rápidas. También tenga en cuenta que los campos objeto pueden simplificar los modelos de datos estándar. Por ejemplo, para una tabla "Contacts" convencional, un solo campo de tipo objeto permite evitar la creación de decenas de campos que representan todos los valores posibles, mayoría de los cuales no se utilizan en el 90% de los casos. Se crea el modelo de información sobre la marcha sólo si es necesario. Todos los comandos del tema Objetos (Lenguaje) ahora aceptan un campo objeto como primer parámetro (objeto). Al igual que los objetos de lenguaje estándar, los valores de los campos objeto se manejan mediante los comandos del tema Objetos (Lenguaje). Por ejemplo: // Definir un valor Los arrays también son soportados, por ejemplo: ARRAY TEXT($arrGirls;3) Para guardar las modificaciones aplicadas a los atributos de un campo objeto, en la mayoría de los casos deberá notificar explícitamente a 4D del cambio antes de guardar el registro. Esta notificación se realiza reasignando el campo del objeto a sí mismo: [Persons]Identity_OB:=[Persons]Identity_OB //fuerza a 4D a actualizar los contenidos del campo Este paso es necesario ya que una referencia de objeto se puede usar en diferentes lugares dentro de la aplicación, incluidos otros campos objeto. El lenguaje 4D no puede detectar si alguno de los atributos del campo objeto se ha modificado al guardar el registro. Debe reasignar explícitamente el campo para guardar su contenido tan pronto como se modifiquen los atributos:
Nota: la asignación del campo no es necesaria cuando se manejan atributos de primer nivel con el comando OB SET: OB SET([Rect]Desc;"x";"50";"y";"50";"color";"blue") //acceso a atributos de primer nivel Los campos objeto pueden ser utilizados en las fórmulas (con ayuda del editor de fórmulas estándar o el comando EXECUTE FORMULA). Sin embargo, en este contexto, los campos objeto pueden ser manejados únicamente por intermedio de los siguientes comandos: Por ejemplo, puede ejecutar la siguiente fórmula de búsqueda: OB Get([Rect]Desc;"color")="blue" De forma predeterminada, los campos objeto se representan como áreas de texto en los formularios 4D. Dentro de estas áreas, los datos objeto deben ser undefined, o formateados en texto JSON; de lo contrario se devuelve un error. CREATE RECORD([Rect]) Cuando el campo [Rect]Desc se incluye en su formulario, se mostrarán los siguientes contenidos: Puede editar los valores que se muestran directamente en el campo texto o introducir datos objeto directamente con la notación objeto estándar; será formateado en JSON automáticamente al pulsar la tecla [Tab]:Sin embargo, la edición directa debe realizarse con precaución ya que los espacios fuera de lugar o símbolos darán lugar a un error de análisis JSON y no se guardarán los datos editados: Por lo general, es más preciso para manejar el contenido de los campos objeto a través de los comandos Objetos (Lenguaje) y JSON. La mayor parte de las funcionalidades estándar de 4D soportan campos de tipo objeto. Sin embargo, algunas partes avanzadas de la aplicación no están listas para utilizar directamente los campos objeto en la versión actual. Estas partes se actualizarán progresivamente y estarán disponibles en próximas versiones. Las siguientes funciones o comandos soportan parcialmente campos objeto a través de fórmulas 4D:
Las siguientes funciones y comandos 4D no admiten campos objeto:
|
PROPIEDADES
Producto: 4D
HISTORIA
Modificado: 4D v15 ARTICLE USAGE
Manual de Diseño ( 4D v16) |
|||||||||||||||||||||||