Gegevens ingelogde windows gebruiker meenenem in access

Status
Niet open voor verdere reacties.

beatzz

Gebruiker
Lid geworden
18 aug 2011
Berichten
14
Is er een manier om in een formulier de "current user" te registreren?
Ik heb het uitgeprobeerd, maar dan staat er altijd "Admin". Ongeacht wie inlogd.
Ik wil graag dat er de windows gebruikersnaam komt te staan van degene die op dat moment is ingelogd.

Alvast bedankt
 
Dan doe je het niet helemaal juist; ik ben overigens benieuwd welke techniek je nu gebruikt. In dit forum komt het onderwerp regelmatig aan bod, met (logischerwijs) steeds dezelfde oplossing. Omdat ik een beetje loop te knoeien met mijn eigen installaties kan ik de code nu even niet ophoesten, maar las je even zoekt in dit forum, vind je de onderwerpen vast.... Ik weet bijvoorbeeld dat Edmoor een oplossing heeft voor Access 2007/2010 (de standaardoplossing werkt namelijk niet in die programma's).
 
Met deze functie kun je een Username uitlezen in Access 2007/2010.

Code:
Function MyEnviron(EnvVal As String) As String
  MyEnviron = VBA.Environ(EnvVal)
End Function

In een (al dan niet bestaande) module maak je een Public Variabele aan:

Public UserNaam as string.

Vervolgens kun je die dan vullen op je startformulier de variabele UserNaam vullen:
UserNaam =MyEnviron("Username")

Omdat een public variabele zijn waarde blijft behouden, kun je hem daarna op elk moment opvragen.
 
Hallo Michel,

Ik ben gaan zoeken in de vooraf gestuurde posts van Edmoor en toen kwam ik deze tegen die jij voorstelde.
Ik heb gister deze uitgeprobeerd en het werkt. Kan ik deze aanhouden voor Access 2007 of is bovenstaande beter?

Code:
Function MyUser() As String
  MyUser = VBA.Environ("Username")
End Function

In je formulier zet je dan:
=MyUser()
 
Ze doen allebei zo'n beetje hetzelfde, dus dat maakt niet zoveel uit. In oudere Access versies kon je met Eviron("Username") gelijk de user ophalen, maar Microsof heeft in zijn oneindige wijsheid besloten dat we dat commando niet meer nodig hadden... :evil:
 
Oke mooi ik weet er niet zoveel vanaf dus ben blij dat het een niet al te moeilijke code was :)
En ik begrijp je: :evil:

Zou je me nog met wat anders kunnen helpen?
 
Het kan zijn dat ik niet de juiste zoektermen gebruik, maar waarschijnlijk begrijp ik het meeste gewoon niet van de gebruikte codes :o

Het is mij nu eindelijk gelukt om wat gegevens van een formulier te kopiëren naar een andere, maar ik zou deze zelfde gegevens ook mee willen nemen bij het invullen van een volgend record.

Dus bijvoorbeeld Formulier 1: naam adres tel.
Formulier 2 (record 1) naam adres tel evaluatie1
(record 2) naam adres tel evaluatie2

Zou dit kunnen in a easy way??
 
Om misverstanden te voorkomen, de fuctie Environ werkt 'gewoon' in VBA, ook in Access 2010. Het werkt niet in Access 2010 als je de functie gebruikt als besturingselementbron.
Dus b.v.:
me!txtIngelogd=Environ("Username") werkt
maar zet je bij het tekstvak txtIngelogd bij het besturingselementbron
=Environ("Username") dan werkt het niet.
 
Ja het kan ook via een 'eigen' functie. Dat zal dan wel gaan, denk ik, met een api uit "advapi32.dll"
Voordeel van Environ is dat je (veel) meer omgevingvariabelen kunt opvragen.
 
Ik had FOSUsername geprobeerd maar die deed het niet bij mij..

Ik gebruik access 2007 maar ik zie de username niet terug in de gebruikte tabellen/rapporten? Weet iemand waarom dit zo is?
 
De functie <FOSUsername> is indertijd ontwikkeld voor een vorige, redelijk oude versie van Access. Je hebt hem absoluut niet meer nodig met de nieuwere versies, al helemaal niet om dat je nu met één regel code hetzelfde bereikt. Vraag: heb je die al geprobeerd, en waarom wil je een andere (zoveel oudere) variant?
 
Ik heb deze gebruikt.
Code:
Function MyUser() As String
  MyUser = VBA.Environ("Username")
End Function
Die werkt goed, maar als ik terug kijk in een tabel of in een rapport dan is die waarde daar blanco.


Ik had trouwens nog een andere vraag gesteld hierboven.. Kan iemand mij ook daarmee helpen?
 
Laatst bewerkt:
Die functie kun je niet in een tabel gebruiken, maar wel in queries, formulieren en rapporten. Zoals hierboven al uitgelegd. Wil je de waarde opslaan, dan moet dat dus ofwel via een bijwerkquery, of via een formulier, waarbij je bijvoorbeeld bij het maken van een record een tekstveld op het formulier koppelt aan het tabelveld, en het tekstveld vult via de functie. Dat kan dan bijvoorbeeld bij de gebeurtenis <Bij aanwijzen> van het formulier, zodat bij elk nieuw record de user opnieuw wordt ingevuld.
Hoe je een heel record kunt dupliceren, kun je o.a. hier lezen.
 
Ok het is allemaal gelukt..
Ik heb toch maar gebruik gemaakt van een functie om bepaalde velden mee te kopieren naar een volgend record want ik begreep de uitleg op die site die je had gestuurd niet.
Dankjewel
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan