filterproblemen met tekstvakken uit een formulier naar een rapport d.m.v. een query

Status
Niet open voor verdere reacties.

MR2012

Gebruiker
Lid geworden
15 mei 2012
Berichten
10
Goededag,

Ik heb op dit moment een tabel gemaakt met meerdere kolommen, door middel van tekstvakken in een formulier wil ik een selectie kunnen maken en deze op een rapport krijgen.

Ik heb 3 tekstvakken door middel van een query met criterium gekoppeld (bedrijf, soort en acties) .

hier gebruik ik bij de query :

Veld : bedrijf
tabel : onderhoud
Criteria : [Forms]![Onderhoud]![Tekst139]

Veld : soort
tabel : onderhoud
Criteria :[Forms]![Onderhoud]![Tekst143]

Veld : acties
tabel : onderhoud
Criteria :[Forms]![Onderhoud]![Tekst147]

Wanneer ik bij het formulier alle 3 de tekstvakken invul krijg ik het gewenste rapport, maar als ik het tekstvak van acties leeglaat dan krijg ik geen resultaten, terwijl ik dan graag de resultaten zou krijgen van het tekstvak bedrijf (139) en soort (143) , ik heb verschillende mgelijkheden geprobeerd maar krijg tot op heden niet het gewenste rapport.

Ik hoop dat iemand mij hier een oplossing voor kan geven.

met vriendelijke groet,

Daniel
 
Om te beginnen: wen jezelf aan om tekstvakken een fatsoenlijke naam te geven; straks weet je echt niet meer wat je bedoelt met Tekst147. een veld txtSoort daarentegen zegt precies wat je er mee wilt. Op basis van fatsoenlijke veldnamen, kun je het oplossen met drie extra velden waarop je een criterium zet. Daarbij vervallen dus de criteria die je nu hebt gemaakt, die moeten weg. De drie velden hebben deze formules:
Code:
IIf(IsNull([Forms]![Onderhoud]![txtBedrijf]);Waar;[Uitslagen].[RennerID]=[Forms]![Onderhoud]![txtBedrijf])
IIf(IsNull([Forms]![Onderhoud]![txtSoort]);Waar;[Uitslagen].[RennerID]=[Forms]![Onderhoud]![txtSoort])
IIf(IsNull([Forms]![Onderhoud]![txtActies]);Waar;[Uitslagen].[RennerID]=[Forms]![Onderhoud]![txtActies])
En elk veld krijgt hetzelfde criterium:
Code:
<>Onwaar
Zichtbaar kun je aan of uitzetten, maar aangezien er onzinnige informatie uitrolt, maak ik de velden zelf altijd onzichtbaar.
 
Beste Michel,

Bedankt voor het reageren op de vraag.

Allereerst heb ik de veldnamen aangepast naar bedrijf soort en acties, dit is inderdaad duidelijker.

Wat voor mij nog even onduidelijk is : de 3 extra velden waarop ik een criterium moet zetten en de code <>Onwaar

Moet ik : IIf(IsNull([Forms]![Onderhoud]![txtActies]);Waar;[Uitslagen].[RennerID]=[Forms]![Onderhoud]![txtActies]) deze in het invulveld van het formulier zetten of in de query

hetzelfde vraag ik me af bij : <>Onwaar

Weet niet of het van belang is maar bij ontwerpweergave staat in het invoervak "niet-afhankelkijk"

Alvast bedankt voor je reactie.

vriendelijke groet,

Daniel
 
Laatst bewerkt:
De formule is een extra veld in je query; hij verwijst naar je formulierveld. Wat er gebeurt is eigenlijk simpel: De IIF kijkt of er een waarde is ingevuld (eigenlijk kijkt hij of het veld leeg is). Is het leeg, dan volgt de waarde TRUE, is het veld niet leeg, dan volgt de vergelijking (het eigenlijke criterium) [Veld]=[Formulierveld]). De uitkomst is dus altijd TRUE (bij leeg automatisch, bij een veldwaarde moet het veld gelijk = TRUE zijn). Door te filteren op <>FALSE laat je dus altijd records zien die aan de voorwaarde voldoen. Je tekstveld is uiteraard niet-afhankelijk, want niet gekoppeld aan een veld. Je wilt immers zelf wat invullen.
 
Dank je michel,

het zal een stomme vraag zijn maar werk met access 2007 en in de query heb ik het volgende :

veld :
tabel:
volgorde:
weergeven ja/nee (hokje aan te vinken)
criteria :
of:

ik heb het uitgeprobeerd met het deel acties :

veld : acties
tabel: onderhoud
volgorde:
weergeven : aan

ik heb : IIf(IsNull([Forms]![Onderhoud]![Acties]);Waar;[Uitslagen].[RennerID]=[Forms]![Onderhoud]![Acties]) ingevuld bij criteria en <>Onwaar eronder maar dit werkt niet, ook vraagt die bij de zoekmacro in het formulier met een pop-up naar RennerID.


Graag zou ik willen weten in welk extra veld ik de formule in moet vullen.


Vriendelijke groet,

Daniel
 
Het voorbeeld is gekopieerd uit een bij mij werkend voorbeeld; logischerwijs heb je geen veld RennerID. Wel zul je een veld Bedrijf hebben, een veld Soort en een veld Acties. Dus, om bij het laatste voorbeeld te blijven:
Code:
IIf(IsNull([Forms]![Onderhoud]![Acties]);Waar;[Acties]=[Forms]![Onderhoud]![Acties])
De rest kun je denk ik zelf wel aanpassen :)
 
Beste Michel,

ik heb het als volgt aangepast :

veld : acties
tabel: onderhoud
volgorde:
weergeven : aan

criteria: IIf(IsNull([Forms]![Onderhoud]![Acties]);Waar;[acties]=[Forms]![Onderhoud]![Acties])
of : <>"Onwaar"

In de database heb ik 3 verschillende waarden staan onder de kolom acties :

spoed
wekelijks
<leeg>

het maakt nu niet uit of ik wel of niet wat invul maar ik krijg altijd dezelfde reultaten met spoed en wekelijks maar niet de de regel waar ik onder acties niets heb ingevuld.

heb echt geen flauw idee wat ik fout doe.

vriendelijke groet,

Daniel
 
Als je dit bij criteria hebt ingevuld: <>"Onwaar" dan geloof ik je direct. Dat is ook fout; het moet zijn: <>Onwaar
 
de "" vult access 2007 zelf aan , maar de onwaar moet inderdaad in de kolom onder criteria ?

dus :

criteria : IIf(IsNull([Forms]![Onderhoud]![Acties]);Waar;[acties]=[Forms]![Onderhoud]![Acties])
of : <>"Onwaar"
 
misschien is het beter als ik alles even uitsplits :

heb een database : genaamd onderhoud met de volgende regels (waarbij tagnummer primairy key is):

Bedrijf Tag nummer Datum Kosten Omschrijving Acties Soort
MOH 41114 13-7-2012 € 755,60 Pomp de-monteren + maasdijk spoed Spoed Pomp
MOH 41115 13-5-2012 Pomp demonteren wekelijks pomp
MOH 45250 12-7-2012 € 1.043,56 Filter schoonmaken heelfilter (45250) Filter
Schouten olie Diesel 22-6-2011 € 19.242,30 Levering Diesel Hulpstof

hierop heb ik een formulier gemaakt genaamd onderhoud met in te vullen tekstvakken :

bedrijf soort en acties

hierop heb ik een rapport aangemaakt genaamd onderhoud1

hierin koppelingen gemaakt zodat bedrijf tagnummer datum kosten omschijving soort en acties terugkomen .

zonder filter of een filter op 1 enkel zoekveld doet deze het goed.

omdat ik op 3 tekstvakken tegelijk wil zoeken heb ik een macro aangemaakt genaamd: onderhoud 2, hierin staat 1 regel :

actie: rapport openen argumenten : onderhoud1; Rapport; onderhoud test; ; Standaard

om op de 3 in te vullen tekstvelden te kunnen zoeken heb ik een filterquery nodig, deze heb ik gemaakt genaamd: onderhoud test

Daarin heb ik staan :

veld : bedrijf
tabel: onderhoud
volgorde:
weergeven : aan

veld : soort
tabel: onderhoud
volgorde:
weergeven : aan

veld : acties
tabel: onderhoud
volgorde:
weergeven : aan

Nu zijn er verschillende mogelijkheden die opgezocht moeten kunnen worden, hiervoor zal ik een criteria moeten gaan invullen, dit is dan ook het stukje wat maar niet wil lukken.

Ik geef nu even alle info die ik kan geven omdat ik misschien ergens anders een fout heb gemaakt.

Als ik nu in de query bij acties invul :

veld : acties
tabel: onderhoud
volgorde:
weergeven : aan

criteria : IIf(IsNull([Forms]![Onderhoud]![Acties]);Waar;[acties]=[Forms]![Onderhoud]![Acties])

dan geeft die een foutmelding, daarom moet ik <>onwaar invullen, deze vul ik dan de regel eronder in waar of: staat Access maakt van <>onwaar dan automatisch <>"onwaar".

Hopelijk heb ik zo meer informatie gegeven waarmee het probleem kan worden opgelost.

Vriendelijke groet,

Daniel
 
Laatst bewerkt:
Ik snap die filterquery niet; ik zou zeggen: maak er eens een voorbeeldje van, want zo kom ik er ook niet uit. De beschreven techniek werkt doorgaans prima, en ik heb er nooit problemen mee. Als het criterium wordt 'vertaald' naar tekst, heb je misschien een Engelstalige variant. In dat geval kun je ook <>FALSE proberen. Ook in de Nederlandse werkt dat overigens, dan wordt het alsnog vertaald naar <>ONWAAR.
 
voorbeeld query.jpg
Formulier.jpg
database.jpg

Moest hiervoor even op een andere computer, maar eerste is een printscreen van de query, 2de is het formulier (tagnummer en datum staan daar ook maar zijn niet gekoppeld, wilde eerst de andere werkend krijgen ), de 3de is een printscreen van de test database.

Ik heb gekeken, maar heb de nederlandse versie, als ik probeer <>False in te geven dan krijg ik ook automatisch "false"
 
Je hebt het niet helemaal begrepen; de IIF formule is een apart veld, waarvan het criterium <>ONWAAR is. Is ook logisch: het veld Acties is een tekstveld, dus daar kun je nooit een criterium op maken van de waarden WAAR of ONWAAR.
 
mmm ok, en dat aparte veld is wel in de query ? of moet ik een apart veld in het formulier ervoor maken ?

blij dat het duidelijk is wat ik heb fout gedaan, nu hopen dat het ook makkelijk is op te lossen, moet zeggen dat ik af en toe vrij gefrustreerd raakte omdat het niet lukte ....
 
Dat aparte veld is juist in een query; zoals je in de formule kunt zien, maakt hij gebruik van het tekstveld uit je formulier.
 
Perfect, had het inderdaad verkeerd begrepen, maar alles werkt nu naar behoren en heb er veel van geleerd.

Bedankt voor de hulp .

Vriendelijke groet,

Daniel
 
Kan de vraag denk ik op <Opgelost>.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan