Filteren in rapport op 3 standen ja/nee

Status
Niet open voor verdere reacties.

Johgs

Gebruiker
Lid geworden
19 mei 2011
Berichten
337
Ik heb een rapport gebaseerd op een query (die op zijn beurt gebaseerd is op 3 query's) en roep dit rapport op via een knop op een formulier.
Dit werkt, ook filteren op de meeste velden op basis van op het formulier ingevulde velden gaat prima.

Er zijn er 2 kolommen in de query die ingevuld worden via vinkjes, dus ja/nee. In gegevensblad van de query worden ze ook als vinkjes weergegeven.

Nu wil ik ook op deze 2 kolommen kunnen filteren met 3 opties, niet van belang (dus alles tonen) , ja of nee.
Rechtstreeks in de query invullen doet precies wat ik vraag, ik krijg alles, alleen de ja's of alleen de nee's. (via waar of onwaar of niets vermelden)
Het lukt echter niet met verwijzingen naar het veld op het oproepende formulier, bij alles wat ik tot nu toe heb geprobeerd(rechtstreeks verwijzen, een expressie of een IIf enz. ) krijg ik niets.

Wat zal wel werken?
 
Eerste gedachte, heb je bij de eigenschappen van de vinkjes Drie standen op Ja gezet.
 
Ja, op het oproepende formulier wel, op het invoerveld voor de data niet, daar zijn maar 2 mogelijkheden ja of nee. Maar in het rapport wil ik ook een overzicht kunnen krijgen waar ja of nee op die velden niet van belang is.
Maar ook op 2 standen wil het niet lukken, die derde kwam er pas bij toen ik er aan dacht dat het vaak niet van belang is of er ja of nee staat. Meestal wil je een totaal overzicht van leveringen of er nu wel of geen klacht is ingediend.
 
Grootste probleem is opgelost, de namen van het label en het veld waren omgewisseld (beter gezegd het label had dezelfde naam gekregen en het veld was teruggevallen op selectievakjexx, stomme fout). Met waar of niet waar werkt het nu wel.

Blijft het probleem met lege waarde voor het selectieveld. ik heb geprobeerd IIf([verwijzigingsveld]) Is Null; Like"*"; ([verwijzingsveld]) maar dan krijg hoe ook gespeld en van haakjes voorzien de melding dat er een ongeldig aantal argumenten is. (ook veld = like "*" e.d. werkt niet)
 
Grootste probleem is opgelost, de namen van het label en het veld waren omgewisseld (beter gezegd het label had dezelfde naam gekregen en het veld was teruggevallen op selectievakjexx, stomme fout). Met waar of niet waar werkt het nu wel.

Blijft het probleem met lege waarde voor het selectieveld. ik heb geprobeerd IIf([verwijzigingsveld]) Is Null; Like"*"; ([verwijzingsveld]) maar dan krijg hoe ook gespeld en van haakjes voorzien de melding dat er een ongeldig aantal argumenten is. (ook veld = like "*" e.d. werkt niet, uiteraard moet dan alles doorgelaten worden maar je weet dan wel dat je eerste argument wordt verwerkt)
 
Voorlopig opgelost door standaardwaarde Nee toe te kennen aan het selectiescherm. (was ook eerste optie maar zocht op label ipv veld)

Blijft over dat een aantal velden op het selectiescherm worden ingevuld via keuzelijsten, dus zonder standaardwaardeoptie. Hoe zet ik in het selectiecriterium dat een leeg veld genegeerd kan worden, maw dus geen selectie op dit veld.
 
je kan in die selectielijst een standaardwaarde toevoegen door een union query te gebruiken als rijbron.
 
Het is juist de bedoeling dat er geselecteerd wordt op niets, oftewel alle waarden van die kolom zijn geldig.
Heb momenteel een IIF die prima werkt met de ja/nee velden. Juist met de velden die via keuzelijst wordt ingevuld heb ik een probleem, het werkt prima als ik bijv. een medewerker invul, maar als dat veld leeg blijft en dus alle medewerkers getoond moet worden werkt het niet. Werkt prima met bijv. Like "*" ingevuld in de query, maar als die Like via het selectieformulier moet worden doorgestuurd krijg ik allerlei foutmeldingen. Dus IIf medewerker veld is not Null krijg ik een overzicht met die ene medewerker maar als het veld leeg is krijg ik de nietwaar optie niet werkend.
Zal eens testen of die join query een standaardwaarde als "vul medewerk in" er in krijgt zonder dat dat in de lijst medewerkers staat.
 
je kan de '*' waarde toevoegen aan je lijst via een union query. In elke applicatie had ik een tabel met 1 rij en 1 kolom DUAL (naar de gelijkaardige systeemtabel in Oracle). De populatiequery voor de keuzelijst is dan iets zoals : select * from dual union select myfield from mytable. Dan kan je de * operator kiezen uit de lijst.
 
Ik heb het wel vaker gezegd, en herhaal het dus gewoon nog maar een keer: als je niet wilt filteren op waarden uit een specifiek veld, neem dat veld dan niet op in je filter. Stop met moeilijk doen :).
 
Probleem is dat is wel of niet wil filteren, simpelste lijkt mij in de query: IIf([Formulieren]![Menu registraties]![Eigen lokatie]=Waar;[Formulieren]![Openingsscherm]![Lokatie]; Like "*" ).

Als ik in plaats van de Like één van de lokaties invul werkt het perfect, ik krijg of de gegevens van de eigen lokatie of van de ingevulde. Het lukt alleen niet met jokers. Vreemde is dat die jokers wel werken in de query via gegevensweergave.

Als noodoplossing kan ik ik alle lokaties invullen met een Or statement, maar dat lijkt me niet handig als er lokaties bijkomen. ;-)
 
Ik zou zeggen: doe er eens een voorbeeldje bij, dan kan je zien hoe moeilijk jij denkt, en hoe simpel het kan :).
 
Het query statement met de IIf staat gewoon onder het veld in de query in de daarvoor bestemde plek. dB zit in de Cloud (beveiligde omgeving (en ja, met laatste Citrix update van vrijdag)) en forum erbuiten, beetje erg omslachtig op dit moment. Is dus voor morgen. ;-)
 
Een dummy db met daarin de betreffende onderdelen en een paar records is uiteraard genoeg :).
 
Dummy uit de dB zelf bleek nogal omslachtig, maar in deze dummy exact hetzelfde probleem, selectievakje uit geeft het keuzeveld in het rapport, aan geeft niets (of was het omgekeerd)

"*" of wat dan ook als joker geeft niet de complete lijst. Wat er voor staat, voegt Access zelf toe.
 

Bijlagen

  • Jokerprobleem.zip
    18,2 KB · Weergaven: 35
Ik snap best dat het niet werkt, want jouw methode gaat nooit werken. Even beperken tot het bestandje: wat zou het gewenste resultaat moeten zijn?
 
Ik heb wat zitten stoeien, in afwachting van je antwoord :). Kijk maar eens naar de twee varianten die nu op het formulier staan.
 

Bijlagen

  • Jokerprobleem.zip
    39,1 KB · Weergaven: 25
bedoeling is ofwel 1 van de lokaties te selecteren ofwel ze allemaal te zien krijgen. De "*" werkt wel direct in de query.
 
Je beide voorbeelden geven inderdaad het gewenste resultaat.

Probleem alleen is dat het 2 instellingen vereist en het rapport moet ook bruikbaar zijn voor digibeten.

Het eigenlijke rapport kent veel totaal data uit veel kolommen in de tabel waarbij voor iedere kolom grenswaarden kunnen worden opgegeven, werkt makkelijk, het selectiecriterium is >= de waarde op formulier en standaard staat daar 0.

Probleem zit 'm in 2 kolommen waarin de lokatie en de medewerker data zit. Er moeten rapporten mogelijk zijn met alle data tezamen waarbij lokatie en medewerker niet wordt opgegeven of als alleen eigen lokatie data getoond moet worden staat vinkje eigen lokatie op Waar en moet de waarde voor [lokatie] gebruikt worden.

Daarnaast als medewerker veld leeg wordt gelaten moeten alle medewerker gegevens worden getoond en als er een medewerker wordt ingevuld (keuzelijst) alleen van die medewerker.

Je tweede methode is aan te passen met alleen vinkje en standaard alleen de eigen lokatie als waarde. Nu nog een optie om het medewerker veld leeg te laten en alles te tonen of er één te selecteren.

Wel merkwaardig dat Access jokertekens kent maar dat die niet bruikbaar zijn in rapportquery's
 
Ik denk dat ik het probleem maar oplos door het rapport 2x te kopiëren en aan te passen voor eigen lokatie en één voor kies medewerker (alleen mogelijk voor eigen lokatie dankzij query voor keuzelijst) en 3 keuzeknoppen om het gewenste rapport te openen.

(en natuurlijk de query ook 2x kopiëren en aanpassen) ;-)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan