4D v16.3

Propriétés des champs

Accueil

 
4D v16.3
Propriétés des champs

Propriétés des champs  


 

 

Outre son nom et son type (cf. section Types de champs 4D), un champ possède des propriétés qui déterminent son apparence, ses conditions de saisie, d’affichage, de modification ou de stockage des données. Les propriétés de chaque champ d’une table peuvent être définies individuellement.

Les propriétés des champs peuvent être paramétrées dans la Palette Inspecteur ou, pour certaines d’entre elles, dans le menu contextuel qui apparaît lorsque vous cliquez avec le bouton droit de la souris sur un champ.

Note : Vous pouvez modifier les propriétés d’un champ pour lequel des données ont déjà été saisies dans la base. Certaines modifications tiennent compte des données existantes. Par exemple, si vous sélectionnez l’attribut Unique, 4D affichera une boîte de dialogue d'alerte et rejettera l'activation de l'attribut si les données du champ contiennent des doublons. En revanche, les modifications des propriétés de contrôle de saisie n’affectent pas les données existantes. Par exemple, si vous sélectionnez l’attribut Obligatoire, seules les saisies réalisées après cette modification feront l’objet d’une vérification ; les valeurs déjà saisies pourront contenir des champs vides.

La zone "Définition" de la Palette Inspecteur permet de configurer les propriétés élémentaires du champ. Certaines propriétés ne sont accessibles qu'en fonction du type de champ sélectionné.

Couleur  

Vous pouvez attribuer une couleur à chaque champ. Les couleurs peuvent être utilisées pour différencier les champs en fonction de leur rôle ou de leurs attributs. Par exemple, vous pouvez utiliser une couleur pour le champ qui identifie de manière unique chaque enregistrement et une autre couleur pour les champs obligatoires.
Il est également possible d’attribuer individuellement une couleur à chaque table (cf. paragraphe Couleur de l’image d’une table) et chaque lien (cf. paragraphe Définition).

Note : La couleur des champs définie dans l’éditeur de structure n’a pas d’incidence sur la couleur des champs affichés dans les formulaires (cf. Couleurs de fond et de trait).

La couleur définie pour un champ est appliquée au libellé du champ. Pour définir la couleur d’un ou de plusieurs champs, effectuez votre sélection et choisissez une couleur depuis :

  • le bouton Couleur de la barre d’outils de l’éditeur,
  • la commande Couleur du menu contextuel des champs,
  • l’option Couleur de la Palette Inspecteur.

L’option Automatique permet d’appliquer la couleur standard d’origine au champ.

Vous pouvez rendre un champ invisible en mode Application et pour les plug-ins en sélectionnant pour ce champ la propriété Invisible. Rendre un champ invisible vous permet de contrôler les opérations qu’un utilisateur peut réaliser sur ce champ en le rendant invisible dans tous les éditeurs et boîtes de dialogue qui apparaissent en mode Application. De même, il ne peut plus être utilisé par les plug-ins. Les éditeurs et boîtes de dialogue concernés dans le mode Application sont les suivants :

Dans ces éditeurs et boîtes de dialogue, l’utilisateur ne peut pas voir ou choisir le champ. Par exemple, l’utilisateur ne peut pas choisir un champ invisible pour un état créé avec l’éditeur d’états rapides.

Attention, lorsque vous utilisez les éditeurs, les utilisateurs disposent de la possibilité de sauvegarder sur disque les caractéristiques de la recherche ou du tri qu’ils ont créé. Dans ce cas, un champ déclaré invisible postérieurement pourra être utilisé. De plus, les utilisateurs peuvent saisir manuellement les noms des champs invisibles dans l'Editeur de formules.

Les noms des champs invisibles sont affichés en italique dans la fenêtre de structure.

Unique  

La propriété Unique est utilisée lorsque vous voulez être sûr que chaque enregistrement d’une table stocke une valeur différente (unique). La propriété Unique est utile pour valider les champs qui contiennent des numéros d’identification, des numéros de sécurité sociale, des numéros de facture, etc.

La propriété Unique empêche la répétition de valeurs “vides”, comme pour toute valeur saisie. Si un champ possède la propriété Unique, seul un enregistrement pourra contenir une valeur vide pour ce champ.

La barre d’informations de l’éditeur indique si la propriété unique est cochée pour un champ (cf. section Editeur de structure).

Dans 4D, les champs ayant l'attribut Unique doivent être indexés :

  • une indication visuelle signale qu'un index va être créé (s'il n'existe pas déjà) lorsque vous sélectionnez l'attribut Unique pour un champ :
  • L'éditeur ne permet pas de supprimer l'index d'un champ ayant l'attribut Unique (l'option Aucun ainsi que la commande de suppression ne sont pas disponibles pour les index lorsqu'un champ unique est sélectionné) :

    Si vous souhaitez supprimer l'index d'un champ unique, vous devez désélectionner au préalable l'attribut Unique.

Cette option permet de contrôler l'exposition du champ dans le contexte des requêtes 4D Mobiles adressées à la base 4D via le protocole REST. Par défaut, toutes les tables et tous les champs sont exposés en 4D Mobile.
Pour des raisons de sécurité, vous pouvez souhaiter ne pas exposer certains champs de votre base aux appels 4D Mobile. Par exemple, vous pouvez vouloir ne pas exposer le champ [Employés]Salaire.

Pour ne pas exposer un champ, désélectionnez l'option Exposer avec le service 4D Mobile pour le champ.

Note : Vous pouvez également définir cette option au niveau de la table, cf. section Propriétés des tables.

A noter que pour qu’un champ soit accessible via 4D Mobile, la table parente doit également l’être. Si la table parente n’est pas exposée, aucun champ de la table ne sera accessible, quel que soit son statut. Grâce à ce mécanisme, vous pouvez activer ou désactiver temporairement l’exposition 4D Mobile d’une table, la valeur individuelle de l’option d’exposition de chaque champ n’est pas modifiée.

Cette option est utilisable dans le contexte de la fonctionnalité "4D Mobile". Pour plus d'informations, reportez-vous au manuel 4D Mobile.

La propriété Refuser l’écriture de la valeur NULL permet d’interdire le stockage de la valeur NULL. 

Lorsque cette propriété est cochée pour un champ, il ne sera pas possible de stocker la valeur NULL dans ce champ. Si un champ disposant de cette propriété reçoit la valeur NULL, une erreur est générée.

Cette propriété de bas niveau correspond précisément à l’attribut NOT NULL du SQL. De manière générale, si vous souhaitez pouvoir utiliser des valeurs NULL dans votre base de données 4D, il est conseillé d’utiliser exclusivement le langage SQL de 4D. 

Note : Dans 4D, les champs peuvent également avoir la propriété “Obligatoire” (cf. ci-dessous). Les deux notions sont proches mais leur portée est différente : la propriété “Obligatoire” est un contrôle de saisie, tandis que “Refuser l’écriture de la valeur NULL” agit au niveau du moteur de la base de données.

Cette propriété permet d’harmoniser les traitements des valeurs “vides” et des valeurs NULL pour le champ via le langage de 4D.
Pour des raisons de compatibilité, les valeurs NULL stockées dans les champs des bases de données 4D sont automatiquement converties en valeurs par défaut lors des manipulations effectuées via le langage de 4D. Par exemple, dans le cas de l’instruction suivante :

 mavarAlpha:=[matable]MonchpAlpha

... si le champ MonchpAlpha contient la valeur NULL, la variable mavarAlpha contiendra “” (chaîne vide).
Les valeurs vides par défaut dépendent du type de données :

  • Pour les types Alpha et Texte : “”
  • Pour les types numériques (Réel, Entier, etc.) : 0
  • Pour le type Date : “00/00/00”
  • Pour le type Heure : “00:00:00”
  • Pour le type Booléen : Faux
  • Pour le type Image : Image vide
  • Pour le type BLOB : BLOB vide

En revanche, ce mécanisme ne s’applique pas en principe aux traitements effectués au niveau du moteur de la base de données 4D, tels que les recherches. En effet, la recherche d’une valeur “vide” (par exemple mavaleur=0) ne trouvera pas les enregistrements stockant la valeur NULL, et inversement. Lorsque les deux types de valeurs (valeurs par défaut et NULL) cohabitent dans les enregistrements pour un même champ, certains traitements peuvent être faussés ou nécessiter du code supplémentaire. Pour éviter ces désagréments, l’option Traduire les NULL en valeurs vides permet d’uniformiser tous les traitements dans le langage de 4D. Cette propriété permet d’étendre le principe d’usage des valeurs par défaut à tous les traitements. Les champs contenant la valeur NULL seront systématiquement considérés comme contenant la valeur par défaut. 

Cette propriété est prise en compte à un niveau très bas du moteur de la base de données. Elle agit notamment sur la commande Valeur champ Null.

Note: Les champs Alpha au format UUID non générés ne sont pas considérés comme NULL (cf. Format UUID).

La propriété “Incrémentation auto” permet de générer des identifiants uniques pour les enregistrements. Elle est utilisable avec les Types de champs 4D Entier, Entier long et Entier long 64.

Un champ auquel cette propriété a été affectée est incrémenté automatiquement à chaque création d’enregistrement dans la table. Le numéro attribué au champ correspond à celui du "compteur interne" de la table, maintenu par 4D. Ce compteur interne est également accessible via les commandes 4D Numerotation automatique, Lire parametre base et le marqueur #N (cf.paragraphe Valeurs par défaut).

Les numéros sont attribués définitivement et ne sont jamais réutilisés automatiquement, même après suppression d’enregistrements ou compactage. Les numéros générés durant une transaction annulée sont “perdus”. 
A noter qu'il est cependant possible de réinitialiser le compteur interne d'une table à l'aide de la commande FIXER PARAMETRE BASE.

La propriété “Incrémentation auto” correspond à l’attribut SQL AUTO_INCREMENT et peut également être définie via ce langage (cf.exemple ci-dessous). Le libellé "AUTO INCREMENT" apparaît également dans la zone d’information SQL de l’Inspecteur pour les champs disposant de cet attribut.

Le code suivant permet de générer un champ “id” de type entier dans la table “animals” :

 TABLEAU TEXTE($names;6)
 $names{1}:="dog"
 $names{2}:="cat"
 $names{3}:="penguin"
 $names{4}:="snake"
 $names{5}:="butterfly"
 $names{6}:="ostrich"
 Debut SQL
    CREATE TABLE animals(
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(30)NOT NULL,
    PRIMARY KEY(id));
    INSERT INTO animals(name) VALUES(:$names);
 Fin SQL

Le code suivant :

SELECT * FROM animals;

... retourne ces valeurs :

id    name
1    dog
2    cat
3    penguin
4    snake
5    butterfly
6    ostrich

Ce menu d'options est disponible pour les champs de type Texte, BLOB, Image et Objet uniquement. Il permet de définir le lieu de stockage des données du champ. Les options suivantes sont disponibles :

  • Dans l’enregistrement : les données sont stockées avec chaque enregistrement. Cette option est généralement à éviter pour les champs contenant des données de grande taille. Cependant, elle est sélectionnée par défaut pour les champs de type Texte car le stockage dans l'enregistrement est nécessaire si vous souhaitez utiliser des index "classiques" de type B-Tree. Le menu de sélection des index est masqué lorsque les données texte sont stockées en-dehors des enregistrements.
  • Dans le fichier de données : les données sont stockées dans le fichier de données, mais en-dehors de chaque enregistrement. Cette option est sélectionnée par défaut pour les champs BLOB, Image et Objet. Le stockage des textes, images, BLOBs ou objets en-dehors des enregistrements permet d'optimiser le fonctionnement des bases manipulant des données de grande taille. 
  • En-dehors du fichier de données : les données sont stockées dans des fichiers séparés, en-dehors du fichier .4DD. Cette option est détaillée dans la section Stockage externe des données.
    Note de compatibilité : Cette option est prise en compte uniquement pour les nouveaux enregistrements créés ultérieurement dans la table. Lorsque vous définissez cette option pour une table dans laquelle des enregistrements ont déjà été saisis, ils ne sont pas modifiés et la table travaillera en mode de stockage mixte interne/externe. Si vous souhaitez étendre ce mode aux enregistrements existants, vous devez compacter les données avec l'option Forcer la mise à jour des enregistrements (cf. Page Compactage).

Comme décrit dans le paragraphe ci-dessus, pour des raisons d’optimisation les données des champs de type BLOB, Image, Texte et Objet peuvent être stockées en-dehors des enregistrements ou en-dehors du fichier de données.

Dans cette configuration, il peut être cependant intéressant, pour des raisons de performances, de "forcer" le stockage des données dans les enregistrements lorsque leur taille est réduite. Ce fonctionnement est particulièrement optimisé si votre application traite des données BLOB, image, texte ou objet de tailles non homogènes.

Ce paramétrage est accessible via l’option Taille max stockage interne. La valeur saisie dans cette zone représente la taille en octets au-dessous de laquelle les données du champ seront stockées dans l’enregistrement. Par exemple, si vous saisissez 30 000 pour un champ image, une image de 20 ko sera stockée dans l’enregistrement et une image de 40 ko sera stockée à l’emplacement défini dans les propriétés (dans le fichier de données ou en-dehors du fichier de données). Par défaut, la valeur est 0 : toutes les données du champ sont stockées en-dehors des enregistrements.

Cette propriété est proposée pour les champs de type Alpha. Elle indique que le champ est utilisé pour stocker des identifiants UUID. Les données stockées dans le champ devront respecter le format UUID (combinaison de 32 lettres (A-F, a-f) et chiffres (0-9). Vous pouvez utiliser pour cela la propriété "UUID Auto", la commande Generer UUID ou tout algorithme personnalisé. 

Si vous tentez de stocker dans ce champ une chaîne qui n’est pas conforme au format UUID, 4D la convertit automatiquement. La même opération est effectuée avec les valeurs de champs existants non alpha transformés en champs UUID : au chargement des enregistrements, les valeurs sont reformatées puis stockées à nouveau.

Les champs ayant la propriété Format UUID peuvent être affichés dans les formulaires et restent saisissables. Leur contenu est affiché en caractères majuscules. Vous devez passer par une variable si vous souhaitez afficher les minuscules. 

Notes :

  • Les champs au format UUID ne peuvent pas être associés à des index de mots-clés ni à des énumérations.
  • Il est possible de créer un lien entre deux champs au format UUID mais pas de lier un champ Alpha standard à un champ au format UUID.
  • Un champ UUID initialisé (généré) et ayant la valeur NULL retourne une chaîne vide. Un champ UUID non généré n'est pas NULL et retourne "000..." (nombre de 0 égal au nombre de caractères). La propriété n'est pas prise en compte par les champs UUID non générés (affichage de "000...").

Cette option n’est active que lorsque la propriété Format UUID est cochée. 

La propriété UUID Auto permet de générer automatiquement un numéro UUID dans le champ.

Le calcul automatique du numéro est effectué dans les contextes suivants :

  • à la création d'un enregistrement,
  • au chargement d'un enregistrement dont le champ UUID contient la valeur Null. Ce cas se produit notamment pour les enregistrements créés et stockés avant l'ajout du champ UUID dans la table, lorsque l'option Traduire les NULL en valeurs vides a été désélectionnée.

Bien entendu, dans tous les cas, il faut que l'enregistrement soit stocké pour que l'UUID automatique généré soit sauvegardé dans le champ.

Note : Lors de l’importation de données, même si cette propriété est cochée, 4D ne génère pas de nouveau numéro mais utilise les valeurs importées (et les transforme éventuellement si le format n’est pas valide). Toutefois, si la valeur du champ importé est vide, un UUID est automatiquement généré.

Note de compatibilité : Cette option a été conservée pour des raisons de compatibilité uniquement et n'a pas d'effet par défaut. Pour pouvoir l'utiliser, vous devez activer QuickTime dans votre application (cf. section Introduction aux images).

Cette propriété est disponible pour les champs Texte et Alpha. Lorsque cette option est cochée, les recherches et les tris effectués parmi les données stockées dans le champ ne tiendront pas compte des éventuelles balises de style qu’il contient.

Cette option est liée à la possibilité dans 4D d’appliquer des styles différents à l’intérieur d’une même zone de texte (texte riche) dans un formulaire. Pour plus d'informations sur cette fonction, reportez-vous à la section LISTE SOURCES DONNEES.

La définition des styles s’effectue via l’insertion de balises HTML dans le texte. Ces balises sont interprétées au moment de l’affichage de la zone de texte. 

Les balises de style sont stockées avec les données. Si, par exemple, vous écrivez "week end" dans un champ texte, 4D stockera "week <SPAN STYLE = "color : #D81E05">end</SPAN>". Ce fonctionnement est transparent pour l’utilisateur au niveau du formulaire. Toutefois, pour les recherches et les tris, un paramétrage spécifique est nécessaire pour que 4D ignore les balises de style. Pour le mot "week end" dans son ensemble, la recherche n’aboutira que si vous avez coché l’option Recherches et tris sur texte sans balise pour le champ.

Note : Avec cette option, une recherche de lavaleur parmi les données de lechamp équivaut en interne à l’exécution de l’instruction suivante :

 CHERCHER PAR FORMULE(latable;OBJET Lire texte brut(lechamp)="lavaleur")

La propriété Index est disponible pour les champs de type Alphanumérique, Texte, Date, Heure, Booléen, Entier, Entier long, Entier 64 bits, Réel, Float et Objet. La propriété Index de mots-clés est disponible pour les champs de type Alphanumérique, Texte et Image. 

L’utilisation d’index permet d’accélérer les traitements et les recherches parmi les données.

La gestion des index est détaillée dans la section Créer et modifier des index.

Les propriétés de contrôle de saisie définissent le fonctionnement du champ durant la saisie dans les formulaires de 4D. Ces propriétés peuvent généralement être également définies au niveau des formulaires.

Lorsque l’attribut Obligatoire est sélectionné pour un champ, l’utilisateur doit obligatoirement saisir une valeur pour ce champ pendant la saisie des données. 4D n’accepte pas de sauvegarder un enregistrement qui contient un champ obligatoire laissé vide. Cette option est habituellement sélectionnée pour un champ qui contient des données essentielles pour votre base. Le champ qui identifie chacun des enregistrements se voit souvent attribuer cette propriété. Les numéros de sécurité sociale, les numéros de facture ainsi que certaines dates peuvent requérir cette option afin de protéger l’intégrité des enregistrements.

Vous pouvez aussi définir cette propriété pour un champ dans un formulaire particulier. Si cette option est sélectionnée dans l’éditeur de structure, vous ne pouvez pas la désélectionner pour un formulaire particulier. Cependant, vous pouvez tout à fait sélectionner cette option pour un champ dans l’éditeur de formulaires alors qu’elle est désélectionnée au niveau de l’éditeur de structure. Pour plus d’informations sur cette possibilité, reportez-vous à la section Propriétés de champs et attributs Saisissable et Obligatoire.

Note : Dans 4D, les champs peuvent également avoir la propriété “Refuser l’écriture de la valeur NULL” (cf. ci-dessus). Les deux notions sont proches mais leur portée est différente : la propriété “Obligatoire” est un contrôle de saisie, tandis que “Refuser l’écriture de la valeur NULL” agit au niveau du moteur de la base de données.

Si cet attribut est sélectionné pour un champ, 4D accepte la première valeur saisie dans ce champ, mais ne permet plus à l’utilisateur de modifier ce champ une fois que l’enregistrement a été sauvegardé. L’utilisateur peut modifier la valeur du champ lors de la création de l’enregistrement, avant qu’il soit validé. Une fois que l’utilisateur a sauvegardé l’enregistrement, la valeur du champ n’est plus modifiable. Le champ ne peut ensuite être modifié que par une méthode ou en mode Développement si vous avez au préalable désélectionné cette option.

Vous pouvez utiliser cet attribut pour les champs qui doivent fournir des éléments fiables, comme des dates de réception, de paiement, etc.

Note : Cet attribut ne fonctionne qu’avec des champs affichés dans un formulaire de saisie en mode Page. Dans les autres cas (saisie en liste, saisie dans un sous-formulaire en mode Liste ou Page), la valeur du champ pourra toujours être modifiée.

L’utilisateur ne peut pas saisir de valeurs à partir du clavier dans un champ pour lequel la propriété Non saisissable est sélectionnée. Vous devez utiliser une valeur par défaut pour un tel champ ou écrire une méthode qui ajoute une valeur dans ce champ. Un champ pour lequel cette propriété est sélectionnée est utile pour l’affichage de valeurs que vous ne souhaitez pas voir modifiées par les utilisateurs, comme des totaux calculés ou des numéros de série affectés par une méthode.

Vous pouvez aussi définir cette propriété pour un champ dans un formulaire particulier. Pour plus d’informations sur cette possibilité, reportez-vous à la section Propriétés de champs et attributs Saisissable et Obligatoire.

Cette option est disponible pour les champs de type Texte uniquement. Lorsqu’elle est cochée, le champ texte est automatiquement configuré, dans les formulaires créés ultérieurement, de manière à contenir plusieurs lignes de texte. Ses caractéristiques par défaut sont les suivantes :

  • hauteur correspondant précisément à plusieurs lignes,
  • barre de défilement horizontale,
  • en exécution, le retour chariot provoque un retour à la ligne.

Lorsque cette option n’est pas cochée, l’apparence par défaut du champ texte dans les formulaires est identique à celle des champs de type Alpha : une seule ligne de hauteur et pas de barre de défilement ; le retour chariot provoque le passage au champ suivant dans le formulaire. 

Il est possible de modifier l’apparence par défaut du champ à tout moment via l’éditeur de formulaires.

Vous pouvez utiliser cette propriété si vous voulez afficher une énumération lors de la saisie de données dans un champ. Pour utiliser cette propriété, il est nécessaire de créer au préalable une énumération à l’aide de l’éditeur d’Enumérations.

Vous pouvez utiliser cette propriété quand vous souhaitez standardiser les saisies dans les champs et éviter les erreurs de saisie. Cette propriété est utile pour les champs qui ont des valeurs connues et habituelles. L’utilisation d’une énumération n’empêche pas la saisie d’une valeur différente (une valeur qui n’apparaît pas dans la liste).

Vous pouvez aussi utiliser une énumération pour un champ dans un formulaire particulier. Si vous n’affectez une énumération que pour un formulaire, elle n’apparaîtra pas dans les autres éditeurs et boîtes de dialogue, comme l’éditeur de recherches. Pour plus d’informations sur l’utilisation des énumérations dans les formulaires, reportez-vous à la section Contrôles et aides à la saisie.

Note : Il est également possible de définir au niveau des formulaires des énumérations de valeurs obligatoires et de valeurs exclues. 

Lorsque vous cochez l’option Autoriser énumération, le menu déroulant associé est activé. Vous pouvez alors sélectionner l’énumération existante que vous souhaitez affecter au champ. Vous pouvez cliquer sur le bouton [...] pour accéder directement à l’éditeur d’Enumérations.

Vous pouvez fournir aux utilisateurs de votre base des informations supplémentaires à l’aide d’infobulles. Si vous écrivez un message dans la zone Infobulles, il s’affichera au-dessus du champ lorsque l’utilisateur placera le pointeur de la souris sur le champ — quel que soit le formulaire dans lequel le champ est placé.

Quand l’utilisateur place le pointeur de la souris au-dessus du champ, le message apparaît dans une infobulle, comme ci-dessous :

Vous pouvez aussi utiliser une infobulle pour un champ dans un formulaire particulier. Si vous n’affectez une infobulle que pour un formulaire, elle n’apparaîtra pas dans les autres formulaires. Pour plus d’informations sur l’utilisation des infobulles dans les formulaires, reportez-vous au paragraphe Message d'aide.

La zone Commentaires de l’Inspecteur vous permet de stocker des informations supplémentaires sur le champ. Ces commentaires seront accessibles à tous les développeurs. A noter que chaque table et chaque lien dispose de sa propre zone de commentaires.

SQL  

La zone SQL de l’Inspecteur fournit des informations utiles en cas d’exploitation du champ via le moteur SQL.

Elle signale notamment si le nom du champ ne respecte pas les règles de la nomenclature SQL (par exemple, le SQL n’autorise pas qu’un nom de champ contienne des espaces, à la différence de 4D).

Note : Le SQL définit également une liste de mots réservés, incluant les fonctions SQL et les mots-clés SQL. Vous pouvez visualiser ces mots réservés dans la Zone des listes de l'éditeur de méthodes.

Pour chaque champ, la zone d’information SQL indique en outre les attributs SQL correspondants (type et propriétés).



Voir aussi  

Propriétés des tables

 
PROPRIÉTÉS 

Produit : 4D
Thème : Définir la structure de la base de données
Nom intl. : Field properties

 
HISTORIQUE 

 
UTILISATION DE L'ARTICLE

4D - Mode Développement ( 4D v16)
4D - Mode Développement ( 4D v16.1)
4D - Mode Développement ( 4D v16.3)