Veld een waarde met * geven

Status
Niet open voor verdere reacties.

test1000

Gebruiker
Lid geworden
7 jul 2017
Berichten
258
Beste,

Ik heb een formulier met verschillende velden.
Als je het 'keuzerondje'veld 'Status' aanvinkt dan wil ik dat het veld F_Status automatisch de waarde like "*" krijgt.
Dus voor alle duidelijkeheid de waarde : like "*"

Maar krijg foutmelding 'Typen komen niet overeen"
Dim F_status as string

De vraag is : welke string/code moet ik geven ?

Wanneer ik doe : me.F_status ="Like *" krijg ik de waarde like *

Maar op welke manier krijg ik de " voor en na de * ?

Alvast bedankt voor de medewerking.
 
Je hebt nu net het teken gevonden dat niet zal werken in combinatie met Like.
"*" is een jokerteken, dat synoniem is voor alle tekens.<

Dus: Like "*" & "Gent" & "*" zal zowel "Gent" als "Gent-Brugge" als "vent van Gent" geven.

Als je nu zou zoeken op Like "*" dan krijg je gewoon je ganse database.

Er zijn nu eenmaal zaken die je niet mag gebruiken.

Zo zal je ook geen bestand kunnen opslaan met de naam: "MijnBestand\Voorbeeld.mdb" vermits die schuine streep voor andere doeleinden gebruikt wordt.

Indien je toch wil zoeken op "*" dan moet je dat doen zonder die Like.
="*"
 
Laatst bewerkt:
Sorry, ik merk nu dat ik een gedeelte vergeten bent mee te delen.
Het veld F_status gebruik ik in een query om te berekenen.

Voorbeeld :

Je hebt een veld [Vertegenwoordigers] waar je een vertegenwoordiger kan filteren.
(keuzelijst met invoervak). Maar je hebt ook een 'rond keuzevakje' "Alle vertegenwoordigers".
Dan heb ik een query "Omzet" die de omzet berekend adhv de vertegenwoordiger die men geselecteerd heeft.
Maar als men "alle vertegenwoordigers" selecteert krijg je de omzet van alle vertegenwoordigers.
Het veld [Vertegenwoordigers] (keuzelijst met invoervak) heeft als naam f_vertegenwoordigers.
Het veld [Alle vertegenwoordigers] (keuzerondje) heeft als naam F_Vertegenwoordigers_alle.
Dan heb ik een onzichtbaar veld op het formulier met naam F_vertegenwoordigers_query.
Dan heb ik een stukje code :
Code:
If isnull(me.f_vertegenwoordigers) then me.F_vertegenwoordigers_query = ???????? (hier moet komen like "*" of ="*")
if isnull(me.f_vertegenwoordigers_all) then me.F_vertegenwoordigers_query = me.f_vertegenwoordigers

In de query 'Omzet' bij het veld [Vertegenwoordiger] is de filter me.vertegenwoordigers_query
Dus selecteer ik vertegenwoordiger A of B of C ed dan werkt de query.
Maar als men 'alle vertegenwoordiger' kiest zou me.vertegenwoordigers_query = like "*" moeten zijn om het te doen werken.

Ofwel zijn er andere alternatieven om het probleem op te lossen ?
Die zijn zeker welkom.

Hopelijk ben ik nu duidelijk.
 
Laatst bewerkt:
Ik vind het een hopeloze constructie. Ofwel je filtert opeen vertegenwoordiger (uit de keuzelijst), ofwel je filtert niet op een vertegenwoordiger en dan kunnen de keuzelijst weglaten uit het filter. Mijn advies: bouw het filter actief op op basis van de gekozen/gebruikte objecten. Hoe dan ook: je kunt compleet zonder dat Keuzerondje. Wat in dit verband overigens een verkeerd gebruik is van keuzerondjes :).
 
Ik begrijp dat het niet de ideale oplossing is.
Maar wat is wel realiseerbaar ?
Aan de tabellen kan ik niets veranderen.
Die komen van een ander programma.
Ofwel moet ik via een tabelmaakquery één record toevoegen nl 'alle'. Dus de tabel 'Vertegenwoordigers' aangevuld met dat ene record 'alle'.
Want de tabel 'Vertegenwoordigers' is maar één voorbeeld.
Ik heb nog meerdere tabellen zoals de tabellen 'Bedrijven', 'Afdelingen' ed.
De gebruiker kan een overzicht vragen van vb één bepaalde afdeling maar ook voor alle afdelingen.
En die 'alle afdelingen' is geen keuze uit de tabel.
Daarom, als workaround, dat ik een 'keuzerondje' dacht te maken voor 'alle afdelingen' (of alle vertegenwoordigers)
Want als er vb geen afdeling is gekozen, wil dit zeggen 'alle afdelingen', maar op welke manier kan ik dit dan inregelen ?
 
Ik heb ook geprobeerd in de query (bij het veld Vertegenwoordigers)

Code:
IIF(isnull(forms!formulier!F_vertegenwoordigers);Like "*";forms!formulier!F_vertegenwoordigers)
Maar dit werkt ook niet.
 
Ik heb een oplossing gevonden :

In de query volgende :

Code:
like "*" & forms!formulier!F_vertegenwoordiger & "*"

Als veld 'blanco' (dus geen selectie) worden alle records getoond.
Anders de selectie van de vertegenwoordiger gekozen in het 'keuzeveld met selectievakje'.
 
Aan de tabellen kan ik niets veranderen.
En dat hóeft ook niet. Je óplossing' werkt wel, maar is dus nog steeds een gammele in mijn ogen. Als je meerdere afdelingen wilt kunnen gebruiken in je filter, dan moet je een keuzelijst gebruiken waarin je meerdere opties kan aanvinken. Met VBA (op basis van een OnKlick event) bouw je dan het filter op (In(Keuze1, Keuze2, Keuze3)) etc. Geen keuze? Geen filter. Filteren met Like is echt niet nodig, en kan nog vervelend uitpakken ook als je pech hebt.
Ik heb wel eens voor iemand een filter gemaakt met een keuzelijst met invoervak, die óók de optie "Alle" wilde hebben in de keuzelijst (sommige mensen zijn nu eenmaal niet van de juiste werkwijze te overtuigen) en dat doe je dan met een Union query, waarbij je de selectie van de tabel combineert met een waarde "Alle". Die staat dan boven aan de keuzelijst. Ook hier moet je dan het filter specifiek toepassen, en niet zoals jij dat doet :). Echt, het kan veel beter.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan