expressie om bepaalde tekens uit te sluiten

Status
Niet open voor verdere reacties.

jozuf

Nieuwe gebruiker
Lid geworden
12 nov 2012
Berichten
3
Ik heb een klein access-probleempje. Wellicht dat iemand me hiervoor de oplossing kan bieden.
In mijn database Access 2010 heb ik een tabel ingebouwd met jaartallen.
Ik heb dit echter opgezet als tekstveld aangezien ik voor de records, waar ik geen jaartal voor weet,
graag 4 vraagtekentjes wil hebben: "????"
Nu wil ik in een formulier opgegeven krijgen wat het oudste en wat het jongste record is.
Dit gaat in principe met:
=Min([Jaar])
=Max([Jaar])
Echter, omdat ik de vraagtekentjes ook in de tabel heb staan kan hij de jongste record er niet uit pikken.
Ik zou dus een expressie moeten opgeven waarbij de vraagtekentjes uitgesloten worden.
Ik heb al van alles geprobeerd, het lukt me echter niet.
Heeft iemand de oplossing?
 
Als je een waarde niet weet, kun je hem natuurlijk ook gewoon leeg laten; lijkt mij duidelijk genoeg. Maar dat is een ander verhaal... Ik weet ook niet of het verstandig is om een onbekende waarde nu juist met vraagtekens te vullen, omdat een vraagteken een bijzonder teken is. Je kon het nauwelijks ongelukkiger hebben gekozen :) Zelf zou ik dus eerder 'n.b.' hebben gebruikt als er toch iets moet komen te staan. Maar je kunt de minimale en maximale waarde er nog wel uitfilteren, met DMIN en DMAX:
Code:
=DMax("[Jaar]";"[tabel]";"[Veld1]<>'" & "????" & "'")
Probleem daarbij is uiteraard dat je een tekstveld gebruikt om een getalwaarde te zoeken, en daarbij is het getal 8 altijd groter dan het getal 10999, omdat de 1 nu eenmaal lager staat als alfanumeriek karakter. Dus of je er veel mee opschiet...
 
Geweldig. Dit is precies wat ik graag wilde. De tabel heb ik in een query gewijzigd omdat daar de juiste waarden staan. Natuurlijk heb je gelijk dat het makkelijker was om de velden leeg te laten als je de waarde niet weet. Deze oplossing vind ik echter veel charmanter. Kun je me de formule wel nog even uitleggen, vooral de tekens die achter [Veld1] staan? alvast bedankt.
 
De formule heb ik getest in een eigen query, en daarbij heette mijn testveld [Veld1]. Bij jou heet dat uiteraard anders. Als jouw tekstveld met de jaartallen [Jaar] heet, dan ziet de formule er zo uit:
Code:
=DMax("[Jaar]";"[tabel]";"[Jaar]<>'" & "????" & "'")
D(atabase) functies als DMAX, DMIN en DLOOKUP werken op basis van tekst; daarom staan de veldnaam, tabelnaam en expressie tussen dubbele aanhalingsteken. De expressie is nodig om velden met ???? niet mee te nemen in de MAX opdracht. Ook die maakt gebruik van tekst, dus daarom staan er om de expressiewaarde enkele aanhalingstekens. Is de vergelijking op getallen (wat je normaal gesproken zou doen) dan ziet de formule er zo uit:
Code:
=DMax("[Jaar]";"[tabel]";"[Jaar]<>" & "9999" )
 
Hartstikke bedankt voor de uitleg. Ik was er nooit zelf op gekomen.:thumb:
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan