Welkom op het forum van startpagina!

Dit forum staat op alleen-lezen. Je kan hier informatie zoeken en oude berichten terugvinden, maar geen nieuwe berichten plaatsen.

Naar overzicht van alle forums

waarde 0 voor lege velden in query-output

  • ldq

    Beste mensen,

    na een middagje puzzelen heb ik het volgende probleem niet op kunnen lossen:

    - Ik maak een kruistabel mbv een query.

    - De lege velden die hier in voorkomen, wat niet te voorkomen is, wil ik opvullen met nullen. Dit omdat de query later weer basis is voor een rapport (met een datumbeperking) Vul ik de lege plekken niet op, dan werkt het rapport niet op het moment dat lege velden in de query optreden.

    De query:

    PARAMETERS Begindatum DateTime, Einddatum DateTime;

    TRANSFORM Sum(Urenregistratie.) AS

    SELECT Urenregistratie.Activiteit, Sum(Urenregistratie.) AS

    FROM Werknemer INNER JOIN Urenregistratie ON Werknemer.WerknemerId = Urenregistratie.Naam

    WHERE ((Urenregistratie.Datum) Between And ) GROUP BY Urenregistratie.Activiteit

    PIVOT Werknemer.Voornaam;

    Mijn oplossing tot nu toe:

    IIf( Is Null;=0;=)

    Dit zou volgens mij de lege gaten moeten vullen met nulletjes, maar waar moet ik het plaatsen in de query? Ik heb van alles geprobeerd maar alles zonder resultaten.

    Wie oh wie weet de oplossing??

    Alvast bedankt voor de hulp,

    Lennart

  • RV

    Gebruik de NZ funktie.

    Zie Access Help voor meer info.

    RV

  • ldq

    Sorry RV,

    na een uurtje prutsen ben ik er nog niet uit. Ik krijg het niet voor elkaar.

    Hoe ziet deze functie er precies uit (kan ik niet echt opmaken uit de HELP-functie) en waar moet ik deze functie in de query plaatsen??

    gr,

    LennartRV schreef:

  • JaapT

    Lennart,

    De Nz-funktie (Null to Zero) zorgt ervoor dat bij het verwerken van velden

    die leeg kunnen zijn, er een 0 (nul) voor in de plaats komt.

    Gebruik deze funktie als volgt:

    Nz(;0)

    Succes,

    Jaap

  • ldq

    Nog een vraagje Jaap,

    waar moet ik deze functie dan in de query plaatsen? Want hij geeft een foutmelding als ik een criterium opgeef voor het waarde veld in deze kruistabel.

    Zou je me aan kunnen geven hoe ik deze functie in de kruistabel moet verwerken?

    Alvast bedankt,

    Lennart

  • JaapT

    Lennart,

    Op de plaats waar je het veld sommeert:

    som(tabel.veldnaam) wordt som(Nz(tabel.veldnaam))

    Succes,

    Jaap

  • ldq

    Jaap,

    het werkt nog steeds niet. De query heb ik veranderd in:

    PARAMETERS Begindatum DateTime, Einddatum DateTime;

    TRANSFORM Sum(Nz(Urenregistratie.)) AS

    SELECT Urenregistratie.Activiteit, Sum(Nz(Urenregistratie.)) AS

    FROM Werknemer INNER JOIN Urenregistratie ON Werknemer.WerknemerId=Urenregistratie.Naam

    WHERE (((Urenregistratie.Datum) Between And ))

    GROUP BY Urenregistratie.Activiteit

    PIVOT Werknemer.Voornaam;

    De lege cellen worden nu nog steeds niet opgevult met nullen. En als ik rapport maak op basis van deze query loopt dit rapport nog steeds vast als 1 van de werknemers geen uren heeft gemaakt in een geselecteerde periode.

    Wat kan ik nu nog doen??

    Alvast bedankt!

    gr,

    Lennart

  • JaapT

    Lennart,

    Je vergeet iets:

    Sum(Nz(Urenregistratie.)) moet zijn:

    Sum(Nz(Urenregistratie.,0))

    Je moet namenlijk aangeven wat de vervangende waarde moet worden!

    Het kan zijn dat je de komma moet vernaderen in ;

    Succes,

    Jaap

  • ldq

    Beste Jaap,

    ik heb er het volgende van gemaakt:

    PARAMETERS Begindatum DateTime, Einddatum DateTime;

    TRANSFORM Sum(Nz(Urenregistratie.,0)) AS

    SELECT Urenregistratie.Activiteit, Sum(Nz(Urenregistratie.,0)) AS

    FROM Werknemer INNER JOIN Urenregistratie ON Werknemer.WerknemerId = Urenregistratie.Naam

    WHERE (((Urenregistratie.Datum) Between And ))

    GROUP BY Urenregistratie.Activiteit

    PIVOT Werknemer.Voornaam;

    Helaas zonder resultaat. Er is geen enkel verschil te zien in de query-uitkomst. Als test heb ik de twee nullen in 1000 veranderd. Zelf nu nog geen verschil in de query-uitkomst.

    Ook heb ik er de volgende query van gemaakt, eveneens zonder resultaat:

    PARAMETERS Begindatum DateTime, Einddatum DateTime;

    TRANSFORM Sum(IIf(IsNull(Urenregistratie.),0,Urenregistratie.)) AS

    SELECT Urenregistratie.Activiteit, Sum(IIf(IsNull(Urenregistratie.),0,Urenregistratie.)) AS

    FROM Werknemer INNER JOIN Urenregistratie ON Werknemer.WerknemerId = Urenregistratie.Naam

    WHERE (((Urenregistratie.Datum) Between And ))

    GROUP BY Urenregistratie.Activiteit

    PIVOT Werknemer.Voornaam;

    Ik krijg ook nog steeds de volgende fout-melding als ik een rapport uitvoer, gebaseerd op de query:

    The Microsoft Jet-database-engine kan niet herkennen als een geldige veldnaam of expressie.

    Deze melding krijg ik dus als ik een rapport maak met een beperking van datum 1 tot datum 2 en er in die periode niet door iedere werknemer uren geregistreerd staan. Als ik een rapport maak van een periode waarbij alle ingevoerde werknemers wel een geregistreerde arbeid hebben dan wordt het rapport wel gegenereerd.

    Wat kan ik nu nog doen om m'n zo graag gewilde rapportje te krijgen????

    bvd,

    Lennart