Aanmeldscherm voor alle gebruikers

  • Onderwerp starter Onderwerp starter VREG
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

VREG

Gebruiker
Lid geworden
11 sep 2007
Berichten
29
Ik heb een stockbeheerprogramma gemaakt dat door verschillende mensen gebruikt wordt in een netwerk. Ik start met een inlogscherm (dat steeds geopend blijft) waar de gebruiker zijn naam selecteert. Elke gebruiker krijgt dan zijn eigen fabricatiekaarten, facturen, bestelbons te zien. Ik doe dit, door elk formulier te baseren op een query, en in deze query op de criteriaregel "cboGebruikerID" in te vullen onder de komom "GebruikerID". Tot hier werkt alles prima.
Bij het inloggen heb ik nu een gebruiker "Alle" toegevoegd. Hiermee wil ik alle facturen , bestelbons, ... te zien krijgen, van alle gebruikers. Hoe kan ik dit verwerken in de criteriaregel?. Tot hiertoe lostte ik dit op door gewoon aparte formulieren te maken, maar dit lijkt me geen elegante oplossing.
 
Door een ander criterium te maken in je queries: Iets als:
Code:
WHERE (IIf([Forms]![Inlogscherm]![cboGebruikerID] ="Alle",True,[GebruikerID]=[Forms]![Inlogscherm]![cboGebruikerID])<>False)
Het huidige criterium kan dan weg.
 
Bij het uitvoeren krijg ik de melding: De expressie bevat een ongedefinieerde functie WHERE. Deze functie is ook niet terug te vinden in de opbouwfunctie voor expressies.
 
Klopt; deze code komt uit de SQL van de query. Als je hem in het query-ontwerp wilt maken, dan doe je het volgende:

1. Nieuw veld met als formule: IIf([Forms]![Inlogscherm]![cboGebruikerID] ="Alle",True,[GebruikerID]=[Forms]![Inlogscherm]![cboGebruikerID])<>False
2. Weergeven: Uitzetten
3. Criterium: <> Onwaar
 
Ik moet nog efkes uitpluizen wat er juist gebeurd, maar het werkt!!
Bedankt OctaFish voor uw kennis en geduld. Ook uw cursus Acces vind ik uitstekend.
 
Dat horen we graag! Een beetje uitleg als toetje:
De IIF maakt een vergelijking op de waarde die in de keuzelijst is geselecteerd. Bij een IIF heb je een waarde TRUE, en een waarde FALSE. Als [cboGebruikerID] ="Alle", dan geeft de IIF de waarde TRUE als uitkomst. Is er iets anders gekozen, dan wordt de FALSE variant uitgevoerd: [GebruikerID]=[Forms]![Inlogscherm]![cboGebruikerID]. Dit is in wezen je oorspronkelijke filter; je records worden gefilterd op basis van GebruikerID. In het veld staat dus ofwel de naam (of ID) van een gebruiker, ofwel de waarde TRUE. Door dit veld nu te filteren op <>FALSE laat je alleen die records zien die voldoen aan de eis. Dat is dus alle records (bij gebruikerID=Alle en IIF waarde TRUE) of de gekozen GebruikerID.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan