Jump to content

Faq/Base/125

From The Document Foundation Wiki
< Faq | Base
This page is a translated version of the page Faq/Base/125 and the translation is 100% complete.


Hoe kan ik omgaan met lege (null) velden?

Berekeningen op velden

In LibreOffice worden nulls altijd doorgegeven,behalve als er een berekening wordt gedaan op een veld met de waarde NULL. Het resultaat van een dergelijke expressie is altijd Null.

Voorbeeld, in operatie als:

"Total" - "Account"

geeft het resultaat Null als een van de waarden niet is ingevoerd. De oplossing is om een functie te gebruiken die test of het veld gegevens bevat of niet. Hiervoor wordt vaak de functie IFNULL gebruikt. De syntaxis is:

IFNULL(exp, value)

ALs exp is Null, wordt value teruggegeven en anders de waarde van exp.

In dit voorbeeld wordt IFNULL gebuikt om 0 terug te geven, als het veld leeg is.

De eerste berekening loopt fout het wordt null (verkeerd getoond) bij rij "1" omdat "Acompte" geen waarde heeft

De SQL-opdracht is

SELECT "ID", "Acompte", "Total", "Total" - "Acompte", IFNULL( "Total", 0 ) - IFNULL( "Acompte", 0 ) FROM "Table1"

Selecteren rijen met null waarden

Het selecteren van rijen met lege velden.

  • In draft mode:


IS EMPTY


  • In SQL mode:


IS NULL


  • In bovenstaand voorbeeld

Selecteren rijen met lege waarden


NB:

  1. In draft mode kun je het criterium IS NULL gebruiken. Na validatie wordt het vervangen door IS EMPTY
  2. In SQL mode is alleen de syntaxis IS NULL is geldig


SELECT "ID", "Acompte", "Total" FROM "Table1" WHERE "Acompte" IS NULL


Beheren boolean velden

De mogelijke waarden van boolean velden
  • Het selecteren van rijen met lege boolean velden gebruikt hetzelfde criterium, IS EMPTY.
  • Een boolean veld kan dus drie waarden hebben: checked, unchecked en empty.

De laatste twee zijn niet gelijk: niet aangevinkt is FALSE (of 0) en empty = onbepaald.

  • LibreOffice toont de waarden als volgt: unchecked = blank, unfilled = achtergrondkleur
    • IS EMPTY selecteert niet ingevulde waarden
    • FALSE selecteert unchecked (false of 0)
    • TRUE selecteert checked (true of 1)