4D v17.4Tipos de datos |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v17.4
Tipos de datos
|
Tipos de datos | Campo | Variable | Expresión |
Cadena (ver nota 1) | Sí | Sí | Sí |
Numérico (ver nota 2) | Sí | Sí | Sí |
Fecha | Sí | Sí | Sí |
Hora | Sí | Sí | Sí |
Booleano | Sí | Sí | Sí |
Imagen | Sí | Sí | Sí |
Puntero | No | Sí | Sí |
BLOB (ver nota 3) | Sí | Sí | No |
Array (ver nota 4) | No | Sí | No |
Entero 64 bits (ver nota 5) | Sí | No | No |
Flotante (ver nota 5) | Sí | No | No |
Objeto | Sí | Sí | Sí |
Colección | No | Sí | Sí |
Indefinido | No | Sí | Sí |
Null | No | No | Sí |
Notas:
Cadena es término genérico que se utiliza para:
Nota: en el manual del Lenguaje 4D, los parámetros de tipo Alfa y Texto en las descripciones de comandos son llamados Cadena, excepto cuando se especifique de otra forma.
Númerico es un término genérico que se utiliza para:
El rango de números de tipo Real es ±1.7e±308 (13 cifras significativas)
El rango de números de tipo Entero ( 2-bytes) es -32,768..32,767 (2^15..(2^15)-1)
El rango de números de tipo Entero largo (4-bytes) es -2^31..(2^31)-1
Puede asignar todo número de tipo numérico a otro número de otro tipo numérico; 4D hace la conversión, truncando o redondeando si es necesario. Sin embargo, cuando los valores se salen del rango, la conversión no devolverá un valor válido. Puede mezclar tipos de datos numéricos en expresiones.
Nota: en el Manual del lenguaje 4D, sin importar el tipo de dato, los parámetros de tipo Real, Entero, y Entero largo en las descripciones de los comandos son llamados numéricos, excepto cuando se establezca de otra manera.
Nota: en el Manual del lenguaje de 4D, los parámetros de tipo Fecha en las descripciones de los comandos son llamados Fecha, excepto cuando se establezca de otra forma.
Las fechas en JavaScript son objetos, son enviadas a 4D como texto que contiene su forma JSON como cualquier otro objeto. Este principio se aplica, en particular, cuando se utilizan las funcionalidades 4D Mobile o Área web.
La forma JSON del objeto Date JavaScript sigue la norma ISO 8601, por ejemplo, 2013-08-23T00:00:00Z".
Es su responsabilidad convertir este texto en una fecha 4D (C_DATE ). Están disponibles dos soluciones:
C_TEXT($1) // recepción de una fecha en formato ISO
C_DATE($d)
$d:=JSON Parse("\""+$1+"\"";Is date))
C_TEXT($1) // recepción de una fecha en formato ISO
C_DATE($d)
$d:=Date($1)
Observe la diferencia entre estas dos soluciones: JSON Parse respeta el modo de conversión definido por el comando SET DATABASE PARAMETER (si lo hay), mientras que Date no está sujeta a este. La conversión con el comando Date siempre tiene en cuenta la zona horaria local.
Nota: a partir de 4D v16 R6, si la configuración de almacenamiento de fecha actual es "tipo fecha", las cadenas fecha JSON en formato "AAAA-MM-DD" se manejan automáticamente como valores de fecha por los comandos JSON Parse y Date. Para más información sobre esta configuración, consulte la opción "Utilizar tipo de fecha en lugar de formato de fecha ISO en objetos" en Página Compatibilidad.
Nota: en el Manual del lenguaje de 4D, los parámetros de tipo Hora en las descripciones de los comandos son llamados Hora, excepto cuando se establezca de otra forma.
Un campo, variable o expresión booleano puede ser VERDADERO o FALSO.
Nota: en el Manual de lenguaje, los parámetros de tipo Booleano en las descripciones se llaman Booleanos, a menos de que establezca de otra forma.
Un campo, variable o expresión de tipo Imagen puede contener imágenes Windows o Macintosh. En general, esto incluye cualquier imagen que se pueda colocar en el Portapapeles o leer desde el disco utilizando comandos de 4D o de un plug-in.
Nota: en el Manual del lenguaje 4D, los parámetros de tipo imagen en las descripciones de los comandos son llamados Imagen, a menos de que se establezca de otra forma.
Una variable o expresión de tipo puntero es una referencia a otras variables (incluyendo arrays y elementos de array), tablas o campos. No hay campos de tipo Puntero.
Para mayor información sobre Punteros, consulte la sección Punteros.
Nota: en el Manual de lenguaje, los parámetros de tipo Puntero en las descripciones de comandos son llamados Puntero excepto cuando se establezca de otra forma.
Un campo o variable de tipo BLOB es una serie de bytes (de un lago de 0 a 2 GB) que puede direccionar individualmente o utilizando los . No hay expresiones de tipo BLOB.
Nota: en el Manual de lenguaje de 4D, los parámetros BLOB en las descripciones de los comandos se llaman BLOB.
Las variables, campos o expresiones de tipo Objeto pueden contener varios tipos de datos. La estructura de los objetos 4D "nativos" se basa en el principio clásico de los pares "propiedad/valor" (también llamado "atributo/valor). La sintaxis de estos objetos se basa en JSON, pero no la sigue completamente.
Atención: recuerde que los nombres de atributos diferencian entre mayúsculas y minúsculas.
Para manejar variables, campos o expresiones de tipo Objeto puede utilizar la notación objeto (ver Uso de la notación objeto) o los comandos Objetos (Lenguaje) de 4D, tales como OB Get y OB SET. Tenga en cuenta que los comandos específicos del tema Búsquedas tales como QUERY BY ATTRIBUTE, ORDER BY ATTRIBUTE y QUERY SELECTION BY ATTRIBUTE se puede utilizar para realizar el procesamiento en campos objeto.
Dado que los campos Objeto normalmente se basan en texto, los contenidos de un campo Objeto se muestran en un formulario 4D de forma predeterminada como texto y se formatean en JSON.
(*) Cuando se expone como texto en el depurador o se exporta a JSON, las propiedades del objeto imagen se muestran como "[object Picture]". Preste atención al hecho de que al guardar el registro se guardará la cadena "[object Picture]" en el atributo.
Nota: para trabajar con objetos JSON, puede utilizar los comandos encontrados en el tema "JSON".
Una variable Colección puede contener una lista ordenada de valores de varios tipos, por ejemplo:
C_COLLECTION($col)
$col:=New collection("Ford";"Renault";"Nissan";500;100;True)
//$col=["Ford","Renault","Nissan",500,100,true]
Los tipos de valores soportados son texto, número, objeto, array, booleano, colección o nulo. No hay ninguna expresión o campo de tipo Colección.
Para administrar las variables del tipo Colección, necesita utilizar la notación de objeto (ver Uso de la notación objeto) y los comandos del tema Colecciones.
Ejemplo:
C_COLLECTION($col)
$col:=New collection("Ford";"Renault";"Nissan")
$col[1]:="BMW"
//$col=["Ford","BMW","Nissan"]
Las variables Colección almacenan arrays JSON. Un array JSON es una colección de valores separados por comas de cualquier tipo, por ejemplo:
C_COLLECTION($c1;$c2)
C_TEXT($json1;$json2)
$c1:=JSON Parse("[\"Ford\",\"Renault\",\"Nissan\",500,100,true]")
$json1:=JSON Stringify($c1)
//$json1=["Ford","Renault","Nissan",500,100,true]
$c2:=JSON Parse("[1,2,3,\"a\",\"b\",\"c\"]")
$json2:=JSON Stringify($c2)
//$json2=[1,2,3,"a","b","c"]
Indefinido no es realmente un tipo de datos. Denota una variable que no ha sido definida aún. Una función (un método de proyecto que devuelve un resultado) puede devolver un valor indefinido, dentro del método, el resultado de la función ($0) se asigna a una expresión indefinida (una expresión calculada con por lo menos una variable indefinida). Un campo no puede ser indefinido. (El comando Undefined siempre devuelve False a un campo).
Null es un tipo de datos especial con un solo valor posible: null. Este valor es devuelto por una expresión que no contiene ningún valor.
Desde el punto de vista de la base de datos 4D, un valor null expresa el hecho de que el valor del dato es desconocido. No significa que el valor está en blanco, o vacío ("" para una cadena, o 0 para un entero largo son valores en blanco). En la base de datos 4D, los valores nulos en campos (excepto los atributos de los campos Objeto) son manejados únicamente por el motor SQL. Una opción de campo específica le permite configurar cómo la base de datos debe manejar este valor (Mapear valores NULOS a valores vacíos) y puede definir o leer los valores nulos usando los comandos Is field value Null y SET FIELD VALUE NULL.
En el lenguaje 4D y para los atributos de los campos objeto, los valores null se gestionan mediante la función Null. Esta función se puede utilizar con las siguientes expresiones para definir o comparar el valor nulo:
Un array no es realmente un tipo de datos. Los diferentes tipos de arrays (como Array entero, Array texto, etc.) se agrupan bajo este título. Los arrays son variables, no hay campos ni expresiones de tipo Array. Para mayor información sobre arrays, consulte la sección Arrays.
Nota: en el Manual de lenguaje 4D, los parámetros de tipo Array en las descripciones de los comandos son llamados Arrays, excepto cuando se establezca de otra forma (por ejemplo Array Texto, Array numérico, ...).
El lenguaje de 4D contiene operadores y comandos para convertir tipos de datos en otros tipos, en la medida en que las conversiones tengan sentido. El lenguaje 4D se asegura de la verificación de los tipos de datos. Por ejemplo, no puede escribir: "abc"+0.5+!12/25/96!-?00:30:45?. Esto generará errores de sintaxis.
La siguiente tabla lista los tipos de datos básicos, los tipos de datos en los que se pueden convertir y los comandos a utilizar para hacerlo:
Tipos a convertir | Convertir en cadena | Convertir en número | Convertir en fecha | Convertir en Hora |
Cadena (*) | Num | Date | Time | |
Numérico (**) | String | |||
Fecha | String | |||
Hora | String | |||
Booleano | Num | |||
Objeto | JSON Stringify | |||
Colección | JSON Stringify |
(*) Las cadenas formateadas en JSON pueden convertirse en datos escalares, objetos, o colecciones, utilizando el comando JSON Parse.
(**) Los valores de tipo Hora pueden tratarse como números.
Nota: además de las conversiones de datos listadas en esta tabla, se pueden obtener conversiones de datos más sofisticadas combinando operadores y otros comandos.
Arrays
Guía de declaración
Métodos
Presentación de comandos JSON
Punteros
Type
Utilización de directivas de compilación
Variables
Producto: 4D
Tema: Presentación del lenguaje
Modificado: 4D v16 R4
Modificado: 4D v16 R6
Manual de lenguaje 4D ( 4D v17)
Manual de lenguaje 4D ( 4D v17.1)
Manual de lenguaje 4D ( 4D v17.2)
Manual de lenguaje 4D ( 4D v17.3)
Manual de lenguaje 4D ( 4D v17.4)