Query met keuzeveld

Status
Niet open voor verdere reacties.

jlebbink

Gebruiker
Lid geworden
15 feb 2010
Berichten
106
Ik heb een query voor offertes, waarbij de status van de offertes middels een keuzeveld met invoermogelijkheid in het formulier Offertes kan worden gekozen. In dit formulier komt een "Offertelijst" voor cf. onderstaande query

SELECT Offerte.OfferteId, Offerte.Offertenr, Offerte.Datum, Klanten.Naam, Klanten.Adres, Klanten.Plaats, Offerte.Beldatum, Offerte.Status
FROM Klanten INNER JOIN Offerte ON Klanten.KlantId = Offerte.KlantId
WHERE (((Offerte.Status)=[forms]![Offertes]![Status]))
ORDER BY Offerte.OfferteId DESC;

In de tabel offertes komen ook offertes voor met geen status, dus geen waarde in het veld status. Met het keuze in het formulier "Offertes" kan ik wel een keuze (Actueel, Afgewezen cq Opdracht) maken. Het lukt mij echter niet om een keuze te maken waarbij alles, dus ook die offertes waar niets in het veld "Status" staat weer te geven.

Onderstaand werkt perfect zolang er een waarde wordt gekozen welke voorkomt in de tabel. Echter een leeg keuzeveld werkt niet en een * in het keuze veld ook niet.

Private Sub Status_AfterUpdate()
Me.Refresh
End Sub
 
Maak in je query een extra expressie, met deze formule:
Code:
Expr1:IIf([Forms]![Offertes]![Status] Is Null;Waar;[Offerte]![.Status]=[Forms]![Offertes]![Status])
Geef als Criterium: <>Onwaar
Nu zie je ofwel de gekozen waarde uit de keuzelijst, ofwel alle records.
 
Laatst bewerkt:
Maak in je query een extra expressie, met deze formule:
Code:
Expr1:IIf([Forms]![Offertes]![Status] Is Null;Waar;[Offerte]![.Status]=[Forms]![Offertes]![Status])
Geef als Criterium: <>Onwaar
Nu zie je ofwel de gekozen waarde uit de keuzelijst, ofwel alle records.

Ik heb Bovenstaande ingevoegd. Daarbij [Offerte]![Status] laten vervallen.
Mijn SQL is nu als volgt:
SELECT Offerte.OfferteId, Offerte.Offertenr, Offerte.Datum, Klanten.Naam, Klanten.Adres, Klanten.Plaats, Offerte.Beldatum, IIf([Forms]![Offertes]![Status] Is Null,True,[Offerte]![.Status]=[Forms]![Offertes]![Status]) AS Expr1
FROM Klanten INNER JOIN Offerte ON Klanten.KlantId = Offerte.KlantId
WHERE (((IIf([Forms]![Offertes]![Status] Is Null,True,[Offerte]![.Status]=[Forms]![Offertes]![Status]))<>False))
ORDER BY Offerte.OfferteId DESC;

Het werkt echter niet. Krijg de foutmelding "Ongeldig argument" Heb ik het misschien fout toegepast?
 
In de oorspronkelijke query stond het veld "Offerte.Status"

SELECT Offerte.OfferteId, Offerte.Offertenr, Offerte.Datum, Klanten.Naam, Klanten.Adres, Klanten.Plaats, Offerte.Beldatum, Offerte.Status
FROM Klanten INNER JOIN Offerte ON Klanten.KlantId = Offerte.KlantId
WHERE (((Offerte.Status)=[forms]![Offertes]![Status]))
ORDER BY Offerte.OfferteId DESC;

Met de toevoeging van de EXPR1 werkt het in het geheel niet

Expr1:IIf([Forms]![Offertes]![Status] Is Null;Waar;[Offerte]![.Status]=[Forms]![Offertes]![Status])

Geef als Criterium: <>Onwaar

Ben een beetje aan het rommelen geslagen en heb nu de situatie:

SELECT Offerte.OfferteId, Offerte.Offertenr, Offerte.Datum, Klanten.Naam, Klanten.Adres, Klanten.Plaats, Offerte.Beldatum, IIf([Forms]![Offertes]![Status] Is Null,True,[Offerte]![.Status]=[Forms]![Offertes]![Status]) AS Expr1
FROM Klanten INNER JOIN Offerte ON Klanten.KlantId = Offerte.KlantId
WHERE (((IIf([Forms]![Offertes]![Status] Is Null,True,[Offerte]![.Status]=[Forms]![Offertes]![Status]))<>False))
ORDER BY Offerte.OfferteId DESC;

Dit geeft "Argument onbekent".

Neem ik het volgende. Mijn oorspronkelijke query met als extra toegevoegd de EXPR1

SELECT Offerte.OfferteId, Offerte.Offertenr, Offerte.Datum, Klanten.Naam, Klanten.Adres, Klanten.Plaats, Offerte.Beldatum, Offerte.Status, IIf([Forms]![Offertes]![Status] Is Null,True,[Offerte]![.Status]=[Forms]![Offertes]![Status]) AS Expr1
FROM Klanten INNER JOIN Offerte ON Klanten.KlantId = Offerte.KlantId
WHERE (((Offerte.Status)=[Forms]![Offertes]![Status]) AND ((IIf([Forms]![Offertes]![Status] Is Null,True,[Offerte]![.Status]=[Forms]![Offertes]![Status]))<>False))
ORDER BY Offerte.OfferteId DESC;

Dit geeft ook "Ongeldig argument" en het formulier opent leeg.
 
Blijkbaar heb je het formulier nog niet geopend als je de query uitvoert. En daar is de code ook niet op geschreven; die gaat er vanuit dat je op het formulier een selectie maakt. Overigens zou hij forms]![Offertes]![Status])) als een parameter moeten beschouwen die je dan leeg kunt laten om de gehele recordset te zien. Het verwijderen van het veld Status mag verder niet uitmaken, zolang de expressie er maar inzit, want die regelt de selectie. Wat voor veld is Status? Ik begin te vermoeden dat het geen Ja/Nee veld of numeriek veld is...
 
Onderstaande SQL is de oplossing. Had zelf een typefoutje gemaakt in de door "OctaFish" aangedragen oplossing.

SELECT Offerte.OfferteId, Offerte.Offertenr, Offerte.Datum, Klanten.Naam, Klanten.Adres, Klanten.Plaats, Offerte.Beldatum, Offerte.Status, IIf([Forms]![Offertes]![Status] Is Null,True,[Offerte]![Status]=[Forms]![Offertes]![Status]) AS Expr1
FROM Klanten INNER JOIN Offerte ON Klanten.KlantId = Offerte.KlantId
WHERE (((IIf([Forms]![Offertes]![Status] Is Null,True,[Offerte]![Status]=[Forms]![Offertes]![Status]))<>False))
ORDER BY Offerte.OfferteId DESC;

Mijn dank is enorm. Ik kan weer verder.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan