Allez plus loin avec les champs d’objets

Traduit automatiquement de Deepl

Leschamps d’objets introduits avec la v15 permettent de créer des bases de données non structurées, semblables à des bases de données sans schéma (NoSQL). 4D v16 va encore plus loin. Obtenez une structure dynamique pour les données non structurées… Confus ?

Imaginez que vous utilisiez un champ objet pour permettre à vos clients de stocker des données personnalisées, où ils peuvent créer leurs propres champs. Cela fonctionne bien et constitue l’une des raisons les plus intéressantes d’utiliser un champ objet. Le problème est le suivant : comment permettre à votre client d’interroger ces données non structurées ? Vous ne savez pas quels « champs » ils ont utilisés, vous ne pouvez pas construire un éditeur de requêtes par-dessus ou proposer une liste déroulante avec les valeurs utilisées.

Avec 4D v16, il est désormais possible d’utiliser les deux nouvelles commandes DISTINCT ATTRIBUTE PATHS et DISTINCT ATTRIBUTE VALUES.

  • Si vous souhaitez connaître tous les attributs existants que votre utilisateur aurait pu saisir, afin de les afficher dans une popup par exemple, vous pouvez utiliser la commande DISTINCT ATTRIBUTE PATHS. Cette commande renvoie la liste des chemins distincts trouvés dans votre champ d’objet indexé pour la sélection actuelle.
  • Vous pouvez également utiliser la commande DISTINCT ATTRIBUTE VALUES si vous souhaitez connaître toutes les valeurs existantes et non répétées dans un chemin défini afin de les présenter, par exemple, dans une liste. Cette commande retourne les valeurs distinctes provenant d’un chemin défini dans votre champ d’objet indexé pour la sélection courante.

En outre, les fonctions mathématiques standard ont été mises à jour afin de pouvoir être utilisées avec les champs d’objets :

  • Sum
  • Min
  • Max
  • Average

Exemple
Si vous voulez voir un exemple, jetez un coup d’oeil à cet exemple.

Exemple de base de données

hdi_distinctPour plus de détails, veuillez vous référer à la documentation de 4D v16, dans les articles suivants :