Faq/Base/125/fr

From The Document Foundation Wiki
< Faq‎ | Base‎ | 125
Jump to: navigation, search

Comment gérer les champs vides (Null) ?

Calculs sur des champs

Dans LibreOffice la propagation de Null implique que lorsque Null est utilisé dans une expression, le résultat de l'expression est lui-même Null. Par exemple une opération du type :

"Total" - "Acompte"

Donnera un résultat Null si l'un des champs n'a pas été saisi. La solution est d'utiliser une fonction permettant de tester si le champ comprend ou non une valeur. Parmi les fonctions disponibles on utilise fréquemment IFNULL dont la syntaxe est :

IFNULL(exp,valeur)

Si exp est Null, valeur est retournée, sinon c'est Exp

Pour cet exemple nous utilisons IFNULL pour retourner zéro lorsque le champ est vide.

copie d'écran requête en mode ébauche, calcul = 0 si on n'utilise pas IFNULL
Le premier calcul montre la propagation du Null pour l'ID 1 (Acompte non saisi)
 
SELECT "ID", "Acompte", "Total", "Total" - "Acompte", IFNULL( "Total", 0 ) - IFNULL( "Acompte", 0 ) FROM "Table1"

Sélectionner des enregistrements pour lesquels un champ est vide

On souhaite rechercher les enregistrements pour lesquels un champ n'a pas été saisi.

  • Le critère de sélection à utiliser en mode ébauche est :
IS EMPTY
  • Le critère de sélection à utiliser en mode SQL est :
IS NULL


  • Avec l'exemple ci-dessus :
copie d'écran requête en mode ébauche avec IS EMPTY
Sélection des enregistrements ayant des champs non saisis

Nota

  1. En mode ébauche il est également possible de saisir le critère IS NULL qui sera automatiquement remplacé après validation par IS EMPTY
  2. En mode SQL la syntaxe IS NULL est la seule autorisée :
 
SELECT "ID", "Acompte", "Total" FROM "Table1" WHERE "Acompte" IS NULL

Gestion des champs booléens

copie d'écran cf. légende
Différents états d'un booléen
  • La sélection d'enregistrements ayant des champs booléens non saisis utilise le même critère IS EMPTY.
  • Il faut noter qu'un champ booléen peut avoir trois états : coché, décoché, non saisi.
Ces deux derniers états ne sont pas équivalents : décoché = FALSE (faux / 0) et non saisi = indéterminé/non renseigné.
  • LibreOffice matérialise ces différents états : décoché = case vide et non saisi = fond coloré
    • IS EMPTY sélectionne les cases vides (non renseignées)
    • FALSE sélectionne les cases décochées (valeur FALSE ou 0)
    • TRUE sélectionne les cases cochées (valeur TRUE ou 1)