Frequently asked questions - Base
TDF LibreOffice Document Liberation Project Blogs communautaires Weblate Nextcloud Redmine Ask LibreOffice Donner
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.
The SQL command is
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 :
Nota
- En mode ébauche il est également possible de saisir le critère IS NULL qui sera automatiquement remplacé après validation par IS EMPTY
- 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
- 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)