Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[ACC 2k3] selectierapporten maken?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Eigenlijk heb ik twee vraagjes...

Vraag 1:
Zelf heb ik maar weinig ervaring met Access dus ik hoop dat jullie mij kunnen helpen.

Ik heb een database met allemaal NAW gegevens en een aantal JA/NEE velden (gewoon velden die aan of uit te vinken zijn)
Optie 1
Optie 2
Optie 3
Optie 4 enz enz

Ik wil vanuit het formulier een rapport kunnen creëren waarbij me gevraagd wordt een optie in te voeren.
Dus als ik bijvoorbeeld "2" intyp, dat ik dan een rapport krijg met alleen de records waar "Optie 2" als TRUE staat gemarkeerd.
Ook wil ik ditzelfde kunnen maar dan met een tabel als uitvoer (een tabel is namelijk te exporteren naar een Excel bestand, een rapport niet)

Iedereen roept dat het heel simpel is, maar ik weet niet hoe ik het voor elkaar moet krijgen.


Vraag 2:
Een selectie maken op basis van bijv. een telefoonnummer of lidmaatschapsnummer is me wel gelukt, daarvoor heb ik deze string in m'n query staan: Like "%%" Or [Voer uw OV-Code in aub:]
maar daarbij moet ik de hele ingevoerde waarde invullen, hoe krijg ik dit zo dat ik alleen gedeelte van de code hoef in te voeren, dus dat ik bijvoorbeeld in plaats van 010-123456 alleen 1234 hoef in te voeren, en dat 'ie dan een rapport genereerd met alle telefoonnummers waar achtereenvolgend 1234 in voor komt?

Ik hoop dat jullie mij verder kunnen helpen want ik kom er niet uit. En alle boeken over Access die ik hier naast me heb liggen bieden ook geen hulp.

Verwijderd

Topicstarter
niemand die mij kan helpen?

Verwijderd

Vraag 1: je wilt dus eigenlijk dat een criterium (waar) alleen van toepassing is wanneer een veld op een formulier aan een bepaalde voorwaarde voldoet? Dat kan vrij lastig worden, zeker als je meer keuzemogelijkheden hebt. In SQL ziet het er als volgt uit:

code:
1
WHERE (((TBL_1.veld1)=True) AND (([Forms]![Start]![Keuze])=1)) OR (((TBL_1.veld2)=True) AND (([Forms]![Start]![Keuze])=2)) OR ... OR (((TBL_1.veldn)=True) AND (([Forms]![Start]![Keuze])=n)) OR ((([Forms]![Start]![Keuze]) Is Null));


Daarbij staat veld1...veldn voor het eerste t/m het n-de veld waarvoor je wilt kunnen aangeven dat de waarde WAAR moet zijn om het record te selecteren, en [Forms]![Start]![Keuze]=x voor het keuzeveld op je formulier waar je een corresponderend veldgetal (x) voor ingeeft. Het laatste gedeelte ([Forms]![Start]![Keuze] Is Null) geeft aan dat alle records moeten worden geretourneerd, indien het keuzeveld in je formulier leeg (null) is.

Vraag 2:

code:
1
Like "*" & [Voer uw OV-code in:] & "*"


Trouwens:
(een tabel is namelijk te exporteren naar een Excel bestand, een rapport niet)
Dat is wel mogelijk - het ziet er alleen niet uit, want Excel pakt dezelfde opmaak als het rapport ;)

[ Voor 10% gewijzigd door Verwijderd op 20-01-2009 19:26 ]


Verwijderd

Topicstarter
Verwijderd schreef op dinsdag 20 januari 2009 @ 19:15:
Vraag 1: je wilt dus eigenlijk dat een criterium (waar) alleen van toepassing is wanneer een veld op een formulier aan een bepaalde voorwaarde voldoet? Dat kan vrij lastig worden, zeker als je meer keuzemogelijkheden hebt. In SQL ziet het er als volgt uit:

code:
1
WHERE (((TBL_1.veld1)=True) AND (([Forms]![Start]![Keuze])=1)) OR (((TBL_1.veld2)=True) AND (([Forms]![Start]![Keuze])=2)) OR ... OR (((TBL_1.veldn)=True) AND (([Forms]![Start]![Keuze])=n)) OR ((([Forms]![Start]![Keuze]) Is Null));


Daarbij staat veld1...veldn voor het eerste t/m het n-de veld waarvoor je wilt kunnen aangeven dat de waarde WAAR moet zijn om het record te selecteren, en [Forms]![Start]![Keuze]=x voor het keuzeveld op je formulier waar je een corresponderend veldgetal (x) voor ingeeft. Het laatste gedeelte ([Forms]![Start]![Keuze] Is Null) geeft aan dat alle records moeten worden geretourneerd, indien het keuzeveld in je formulier leeg (null) is.

Vraag 2:

code:
1
Like "*" & [Voer uw OV-code in:] & "*"


Trouwens:


[...]


Dat is wel mogelijk - het ziet er alleen niet uit, want Excel pakt dezelfde opmaak als het rapport ;)
Oke, vraag 2 is opgelost Thanks!!

heb je echt geen oplossing voor m'n eerste probleem? :$

Ik zou 'm je wel kunnen sturen, dan is het duidelijker wat ik bedoel

[ Voor 3% gewijzigd door Verwijderd op 20-01-2009 23:09 ]


Verwijderd

Ik heb toch een oplossing laten zien? Je zult 'm alleen zelf naar je eigen situatie moeten vertalen, want die kan ik niet zien ;)

Verwijderd

Topicstarter
Verwijderd schreef op dinsdag 20 januari 2009 @ 23:13:
Ik heb toch een oplossing laten zien? Je zult 'm alleen zelf naar je eigen situatie moeten vertalen, want die kan ik niet zien ;)
oke... dat eerste gedeelte snap ik, behalve dat laatste, moet ik die string afsluiten met OR ((([Forms]![Start]![Keuze]) Is Null)); ?
en waar moet ik die string invoeren?
Waar ik 'm ook invoer, hij zegt overal "De syntaxis van de expressie is ongeldig of u moet de tekstgegevens tussen aanhalingstekens plaatsen"

ja sorry ik ben misschien wel heel erg dom hoor, maar ik ben hier gewoon niet zo in thuis, maar heb het tegelijkertijd wel hard nodig

[ Voor 32% gewijzigd door Verwijderd op 21-01-2009 00:31 ]


Verwijderd

Die tekst moet je invoeren in het SQL-scherm (in Access heb je een design-view en een SQL-view). Omdat dat misschien iets te hoog gegrepen is als je weinig ervaring met Access hebt, heb ik even een screenshotje van mijn design gemaakt:

Afbeeldingslocatie: http://www.nederlandmetro.nl/NMimages/ScreenshotAccess.PNG

Ziet er iets anders uit dan in mijn sql-voorbeeld hierboven, maar het idee is als volgt: in de velden Veld4, Veld5 en Veld6 staan steeds waarden WAAR (TRUE) of ONWAAR (FALSE). Ik heb steeds per veld het criterium WAAR opgegeven; voor ieder veld pak ik een nieuwe regel omdat je steeds voor één van de velden alleen records met WAAR wilt hebben (= óf veld4, óf veld5, óf veld6...óf veldn). Tegelijk is dat criterium ook alleen geldig indien er een bepaalde waarde is ingevuld in je formulier (veld Keuze op het formulier met de naam Start (=[Forms]![Start]![Keuze]), in dit geval een 1, 2 of 3. Die waarden heb ik dan ook steeds op dezelfde regel als één van de WAAR-criteria neergezet van één van de velden. Op de onderste regel onder [Forms]![Start]![Keuze] staat "Is Null", waarmee alle records worden teruggegeven indien dit veld leeg (Null) is.
Hopelijk wordt het in deze design-view wat duidelijker; er zit volgens mij nl. wel een goed zichtbare logica in. Aan jou de uitdaging om dit principe te vertalen naar jouw query en database. ;)

Verwijderd

Topicstarter
Verwijderd schreef op woensdag 21 januari 2009 @ 13:08:
Die tekst moet je invoeren in het SQL-scherm (in Access heb je een design-view en een SQL-view). Omdat dat misschien iets te hoog gegrepen is als je weinig ervaring met Access hebt, heb ik even een screenshotje van mijn design gemaakt:

[afbeelding]

Ziet er iets anders uit dan in mijn sql-voorbeeld hierboven, maar het idee is als volgt: in de velden Veld4, Veld5 en Veld6 staan steeds waarden WAAR (TRUE) of ONWAAR (FALSE). Ik heb steeds per veld het criterium WAAR opgegeven; voor ieder veld pak ik een nieuwe regel omdat je steeds voor één van de velden alleen records met WAAR wilt hebben (= óf veld4, óf veld5, óf veld6...óf veldn). Tegelijk is dat criterium ook alleen geldig indien er een bepaalde waarde is ingevuld in je formulier (veld Keuze op het formulier met de naam Start (=[Forms]![Start]![Keuze]), in dit geval een 1, 2 of 3. Die waarden heb ik dan ook steeds op dezelfde regel als één van de WAAR-criteria neergezet van één van de velden. Op de onderste regel onder [Forms]![Start]![Keuze] staat "Is Null", waarmee alle records worden teruggegeven indien dit veld leeg (Null) is.
Hopelijk wordt het in deze design-view wat duidelijker; er zit volgens mij nl. wel een goed zichtbare logica in. Aan jou de uitdaging om dit principe te vertalen naar jouw query en database. ;)
Thanks! er zit zeker wel logica in. En dat vertalen naar m'n eigen tabel was het probleem ook niet...

Maar ik krijg 'm nog steeds niet werkend, als ik de string [Forms]!{Start]![Keuze] invoer, zet'ie er automatisch Expr1: voor en als ik 'm uitvoer vraagt hij eerst om de periode die ik wil tonen, dan typ ik in 1 en klik ik op OK, dan krijg ik weer een popup "Parameter waarde opgeven"
Formulieren!Start!Keuze, of ik die nou leeg laat of een nummer invul, beide steeds krijg ik een lege tabel als resultaat.

Verwijderd

Hm. Kennelijk is dit alleen via het SQL-scherm invoerbaar.

Een alternatief is om het [Forms]![Start]![Keuze]-criterium middels een And-operator samen te voegen met het waar-criterium per veld (dus: Waar And [Forms]![Start]![Keuze]=1; Waar And [Forms]![Start]![Keuze]=2 etc.). Het criterium [Forms]![Start]![Keuze] Is Null zet je dan op de regel onder de regel waar het criterium van je laatste veld op staat.
Zodra je de query hebt opgeslagen, afsluit en opnieuw opent in Design View, zul je zien dat deze is veranderd zoals ik hem in het screenshot heb laten zien ;)

Verwijderd

Topicstarter
Verwijderd schreef op woensdag 21 januari 2009 @ 17:13:
Hm. Kennelijk is dit alleen via het SQL-scherm invoerbaar.

Een alternatief is om het [Forms]![Start]![Keuze]-criterium middels een And-operator samen te voegen met het waar-criterium per veld (dus: Waar And [Forms]![Start]![Keuze]=1; Waar And [Forms]![Start]![Keuze]=2 etc.). Het criterium [Forms]![Start]![Keuze] Is Null zet je dan op de regel onder de regel waar het criterium van je laatste veld op staat.
Zodra je de query hebt opgeslagen, afsluit en opnieuw opent in Design View, zul je zien dat deze is veranderd zoals ik hem in het screenshot heb laten zien ;)
Ik heb het geprobeerd, maar als ik 'm opsla en uitvoer blijft hij weer terugkomen met die vraag "Parameter waarde opgeven" Formulier!Start!Keuze

als ik de query afsluit en weer open in de ontwerpweergave, dan staan alle velden weer op Waar en is de toevoeging And [Forms]![Start]![Keuze]=1 weer verdwenen.

snap echt niet wat ik verkeerd doe :(

Verwijderd

Topicstarter
ik heb die string [Forms]![Start]![Keuze] vervangen door [Welke periode wilt u tonen?]
nu werkt hij prima, eindelijk :)

bedankt voor je hulp!!

Verwijderd

Graag gedaan!

Het idee achter [Forms]![Start]![Keuze] is dat het een invulveld is met de naam Keuze op een formulier ([Forms]) dat Start heet. Vandaar de syntax.

Op zich werkt jouw methode ook prima; alleen zal de gebruiker dan pas naar een parameterwaarde gevraagd worden op het moment dat de query al draait. Met een invulformulier kan een gebruiker vóór het draaien van een query al parameterwaarden opgeven - en dat is vooral handig als het er meer dan één betreft.
Pagina: 1