Records tonen op doorlopend formulier i.c.m. like functie

Status
Niet open voor verdere reacties.

danny88

Gebruiker
Lid geworden
14 apr 2011
Berichten
70
Heb een doorlopend formulier gemaakt waarin al mijn omzetten getoond worden.
Op alle velden kan een selectie gemaakt worden.
Debiteur id, debiteurnaam, factuurdatum, jaar, maand, factuurnr, bedragincl.
Voor het zoeken gebruik ik in mijn query:
Like [Forms]![frm_OmzetOverzicht]![fldZoekMaand] & "*" Or Is Null.
Als ik het formulier dan open zie ik alle records, dit is prima.

Alleen als ik bijvoorbeeld op de maand 1 zoek krijg ik de records te zien met 1, 10,11,12.
en wil alleen van de maand 1 de records zien.
Heb toen [Forms]![frm_OmzetOverzicht]![fldZoekMaand] Or Is Null geprobeerd alleen bij het openen van het formulier wordt er geen 1 record getoond, alleen als ik een selectie aangeef.

Hoe kan ik het voor elkaar krijgen alle records te zien bij openen?

En is het mogelijk om bij voorbeeld met < kleiner > groter dan te werken?
In de criteria van de query werkt dit wel, maar als je het in een veld typt op het formulier niet.

Als het niet duidelijk is plaats ik wel een voorbeeldje.
 
Het is, met je oorspronkelijke filter, wel logisch dt je alles krijgt met een 1 er in, omdat je niet op een waarde filtert, maar op waarden die met een 1 beginnen. Dus eigenlijk een onbruikbaar filter. Je tweede filter werkt niet omdat je waarschijnlijk geen lege waarden hebt, en daar probeer je op te filteren. (Of op een gekozen maand). Wil je kiezen uit een waarde uit je formulier, of alle records kunnen zien, dan kun je beter onderstaande constructie gebruiken:

Code:
IIf(IsNull([Forms]![frm_OmzetOverzicht]![fldZoekMaand]);Waar;[Jouw tabelnaam of query].[Het veld met de maand die je wilt filteren]=[Forms]![frm_OmzetOverzicht]![fldZoekMaand])
Deze formule zet je in de query in de regel <Veld>. Als Criterium gebruik je dan: <>ONWAAR
 
Heb het geprobeerd, maar krijg alleen maar -1 te zien bij maand op mijn formulier.

Wil je er misschien naar kijken waar het fout gaat?
 

Bijlagen

Dat wordt dan vanavond, want ik heb op het werk geen 2007.
 
Er zat in ieder geval een klein foutje in je opzet, die heb ik er uitgehaald. Hij werkt nu.
 

Bijlagen

Wederom weer bedankt voor je hulp.

Klopt het dat het besturgingselementbron op het formulier dan wel op 'maand' blijft staan? en niet op 'test'.
Zo ja dan doe ik het niet helemaal begrijpen.

test: IIf(IsNull([Forms]![frm_OmzetOverzicht]![fldZoekMaand]);Waar;Month([Factuurdatum])=[Forms]![frm_OmzetOverzicht]![fldZoekMaand])



Als ik vanuit OmzetOverzicht een doorlopend formulier opent om een klant op te zoeken.
Vervolgens dubbelklik op het gevonden record wil ik dat het debiteurnr ingevuld wordt in het zoekveld.

Maar kan dit dan op een manier zodat je het doorlopend formulier om een klant op te zoeken voor meerdere
formulieren kan gebruiken?
 
Het Testveld is alleen bedoeld om te filteren. Je hoeft hem dus ook niet zichtbaar te hebben in je query, of op je formulier te zetten. Overigens heb ik je code voor het weeknummer ook enigszins aangepast. Je ging ongeveer drie keer links om, terwijl je ook één keer naar rechts had gekund ;)
Enige uitleg over de formule: een IIF vergelijking levert twee waarden op: True of False.
In dit geval is de vergelijking: is het zoekveld leeg? Dat regel je met: ([Forms]![frm_OmzetOverzicht]![fldZoekMaand] Is Null). Als dat zo is, je hebt dus niks ingevuld, dan is de de vergelijking True, en wordt het resultaat: WAAR (of TRUE of -1) ingevuld.
Heb je wèl iets ingevuld, en is de uitkomst van de vergelijking dus False, dan wordt het ONWAAR element van de IIF uitgevoerd. En dat is ook weer een vergelijking. Je vergelijkt nu de ingevulde maand op het formulier met de maandwaarde van het veld Factuurdatum. En zoals je weet: een vergelijking is waar, of niet waar. Bij een ingevulde maand, bijvoorbeeld het cijfer 5, kijkt de formule naar elke maandwaarde in je tabel, en vergelijkt die met het getal 5. Dus je krijgt bijvoorbeeld de volgende vergelijkingen: 1=5, 2=5, 5=5, en 12=5. Deze vergelijkingen leveren achtereenvolgens de volgende uitkomsten op: False, False, True, False.
En nu komt het laatste deel van de truc: we filteren vervolgens alle 'foute' combinaties er uit, door een Criterium in te stellen: <>Onwaar. Is het zoekveld op het formulier leeg, dan wordt automatisch Waar ingevuld. Het criterium filtert alleen de onware records er uit, dus krijg je alle records te zien. Heb je wel een getal ingevuld, dan is het resultaat dat elke maand gelijk moet zijn aan het invulveld. De vergelijking: Maand=Zoekveld. Hierbij krijg je twee verschillende uitkomsten, zoals gezegd. Waar, of Onwaar. En omdat je Onwaar er uit filtert, hou je alleen de records over die overeenkomen met je zoekveld.
 
Bedankt voor de heldere uitleg.

Wist al aardig hoe de IIF functie werkte, alleen had ik hier zelf nooit opgekomen.
Was al bezig geweest met de IIf functie in het veld maand om als criterium te gebruiken, maar zonder enig goed resultaat.
Snap nu waarom het testveld dient en hoe het werkt. Dus weer een beetje wijzer geworden.
 
Laatst bewerkt:
Michel, is het eigenlijk nog mogelijk om bijvoorbeeld met tekens selecties te maken.
Bijvoorbeeld t/m maand 3. <=3.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan