Gebruikersnaam onthouden en in zin laten verschijnen

Status
Niet open voor verdere reacties.

remcop1989

Gebruiker
Lid geworden
29 mrt 2012
Berichten
492
Gebruikers selecteren hun gebruikersnaam en ID op het inlogscherm.
Vervolgens wil ik dat dit wordt onthouden voor later gebruik.
Dit kan ik doen door het inloggen scherm open te laten staan, maar wellicht dat er een andere (of betere) mogelijkheid is?

Vervolgens wil ik ook dat deze gebruikersnaam verwerkt wordt in de zin "Welkom [gebruikersnaam]. Uw gebruikers-ID is [gebruikersID]."

De gebruikersnaam en gebruikersID zijn ook nodig in andere schermen.

Is dit mogelijk?
 
Laatst bewerkt:
Type in een DOS prompt eens SET (en druk op return). Je krijgt dan een lijstje van systeemvariabelen te zien met hun bijbehorende waardes. Deze variabelen kan je in een script gebruiken.
 
Nee, sorry, ik bedoel "gebruikersID" en "Gebruikersnaam" die ik in tekstvelden op het formulier heb...
 
Met deze functie kan je kijken of een persoon toegang heeft.

Code:
Function Toegang() As Boolean
Dim sqlstring As String
Dim rs As ADODB.Recordset

Dim login As String
Dim wachtwoord As String
login = Nz(Me.comboLogin, 0)

If login = "" Then Exit Function
wachtwoord = Nz(Me.txtWachtwoord, 0)
If wachtwoord = "" Then Exit Function

sqlstring = "SELECT LoginNaam, ww FROM tblLoginNamen " & _
" WHERE LoginNaam=" & Chr$(34) & login & Chr$(34) & " and ww=" & Chr$(34) & wachtwoord & Chr$(34)

Set rs = RunSQL(sqlstring)
If rs.RecordCount = 0 Then
MsgBox "Wachtwoord niet juist!", vbCritical, ""
Toegang = False
Exit Function
Else
Toegang = True

End If


End Function

De volgende code staat onder de OK knop:

Code:
Private Sub btnOk_Click()
If Toegang = True Then

WriteUserInfoToRegistry

DoCmd.OpenForm "Switchboard"
DoCmd.Close acForm, "frmLogin", acSaveNo
Else
Exit Sub
End If

End Sub

In de vorige code verwijs ik naar writeuserinfotoregistry.

Code:
Sub WriteUserInfoToRegistry()
  On Error Resume Next
  SaveSetting "Bedrijfsnaam", "Bedrijfsnaam", "Loginnaam", Nz(Me.comboLogin, 0)
 
    On Error GoTo 0
End Sub

Omdat het nu naar de registry is geschreven kan je hem opvragen met "Huidigegebruiker()"
Als je de volgende code in een module hebt staan:

Code:
Public Function HuidigeGebruiker() As String

   HuidigeGebruiker = GetSetting("Bedrijfsnaam", "Bedrijfsnaam", "Loginnaam", "")
    
End Function
 
Laatst bewerkt:
controleren op toegang is niet nodig.

Ik heb een tabel gebruikers met velden gebruikerID en gebruikersnaam
Gebruikers selecteren hun gebruikerID. Gebruikersnaam wordt automatisch opgezocht in een 2e tekstvak.

Vervolgens wil ik dus dat de gebruikersID zoals opgegeven wordt onthouden bij gebruik van de overige formulieren
 
Dan kan je het inlog gedeelte vergeten.
En alleen kijken naar de WriteUserInfoToRegistry
 
En hoe verwerk ik dat hierin:

Code:
Private Sub cmdInloggen_Click()
    If IsNull(Me.cmbGebruiker) Or Me.cmbGebruiker = "" Then
      MsgBox "Geef a.u.b. een gebruikersnaam op.", vbOKOnly, "Gebruikersnaam vereist"
        Me.cmbGebruiker.SetFocus
        Exit Sub
Else: DoCmd.Minimize
Me.Visible = True
DoCmd.OpenForm "Hoofdmenu"

      End If
End Sub

Deze code staat nu onder mijn "login" knop
 
Maak in een module een public variabele, en sla daar de gebruikersnaam in op. Dan kun je hem overal gebruiken, en heb je geen functies (hoe fraai ook) nodig.
 
Heel simpel. Maak een nieuwe module (<Alt>+<F11> om in de VBA editor te komen) en dan <Invoegen>, <Module>. En daar zet je bovenin:
Code:
Public UserName As String
En dan kun je hem overal vullen met:
Code:
UserName = VBA.Environ("Username")
Da's alles.
 
Ga het morgen proberen! :) dank.

Het is zo simpel als je het eenmaal door begint te krijgen. Is alleen lastig om te achterhalen hoe je iets doet ;-)
 
Ja, dat had ik gedacht dat dat zo simpel zou zijn. Ik heb nu in een tekstvak de volgende code:

Ik heb een module gemaakt:

Code:
Public Gebruikersnaam As String
Public GebruikerID As String
Moet ik deze nog op een speciale plaats invoegen? Ik heb nu alleen "Alt+F11" --> invoegen --> module --> deze tekst erin gezet --> opgeslagen

Code:
="Welcome " & [VBA].[Environ]("Gebruikersnaam") & ". Uw gebruikerID is " & [VBA].[Environ]("GebruikerID") & "."

Deze werkt wel:

Code:
="Welcome" & [Formulieren]![Inloggen]![Gebruikersnaam] & ". Uw gebruikerID is " & [Formulieren]![Inloggen]![GebruikerID] & "."
 
Lezen blijft lastig; je moet de code natuurlijk wel goed overnemen ;)
Als ik er vanuit ga dat je de onderste code op het formulier Inloggen gebruikt, bij de gebeurtenis <Bij aanwijzen> bijvoorbeeld, dan krijg je zoiets:
Code:
Private Sub Form_Current()
    UserName = VBA.Environ("UserName")
    Me.GebruikerID = UserName
End Sub
Omdat de variabele UserName nu gevuld is, kun je hem overal in de db gebruiken.
 
Dan begrijpen we elkaar verkeerd.

Ik bedoelde niet de gebruikersnaam op de PC maar de gebruikersnaam zoals ze opgeven op het formulier "inloggen" in het vak "gebruikersnaam". ;)
 
Same difference; dan gebruik je een andere waarde in UserName. Ik gaf slechts een voorbeeldje hoe je 'm vult.
 
Oke, ik heb nu het volgende:


Een module:
Code:
Public Username As String
Public UserID As String

Vervolgens op het formulier "Hoofdmenu" heb ik deze code:
Code:
Private Sub Form_Open(Cancel As Integer)
    Username = VBA.Environ("[Formulieren]![Inloggen]![txtGebruikersnaam]")
    UserID = VBA.Environ("[Formulieren]![Inloggen]![cboGebruikerID]")
    Me.Welkom = "Welkom " & Username & ". Uw gebruiker-ID is " & UserID & "."
End Sub

'Welkom' is hierbij het tekstvak op het formulier "hoofdmenu" waarin ik de zin "Welkom ...... Uw gebruiker-ID is....." wil laten verschijnen.

De zin toont hij wel, maar hij haalt de waarden nog niet op.

Ik snap niet hoe ik de waarde gevuld krijg...
 
Laatst bewerkt:
Volgens mij heb je Environ helemaal niet nodig; dat was ook slechts een voorbeeld om de inlognaam van de gebruiker uit Windows te halen.
Code:
Private Sub Form_Open(Cancel As Integer)
    Username = Me.txtGebruikersnaam
    UserID = VBA.Environ("UserName")
    Me.Welkom = "Welkom " & Username & ". Uw gebruiker-ID is " & UserID & "."
End Sub
 
Dank, het werkt!! :) heb de code geplaatst in de "private sub inloggen_click()" lijn op het formulier "inloggen":

Code:
Private Sub Inloggen_Click()
    If IsNull(Me.cboGebruikerID) Or Me.cboGebruikerID = "" Then
        MsgBox "Selecteer a.u.b. een gebruikersID.", vbOKOnly, "Gebruikersnaam vereist"
            Me.cboGebruikerID.SetFocus
            Exit Sub
    ElseIf IsNull(Me.txtGebruikersnaam) Or Me.txtGebruikersnaam = "" Then
            MsgBox "Dit is geen geldige gebruiker-ID! Geef een geldige gebruiker-ID op of vraag of u toegevoegd kunt worden aan de gebruikerslijst.", vbOKOnly, "Gebruikersnaam vereist"
            Me.cboGebruikerID.SetFocus
            Exit Sub
    Else:   Username = Me.txtGebruikersnaam
    UserID = Me.cboGebruikerID
    DoCmd.OpenForm "Hoofdmenu"
    End If
    
             
    DoCmd.Close acForm, "Inloggen", acSaveNo
End Sub

Had hem eerst ná "DoCmd.OpenForm "Hoofdmenu" en dat resulteerde erin dat hij de username en userid van de vorige login pakte. De code nog doorgelezen en toen snapte ik wat hij deed en wist ik het zelf op te lossen *klopt zichzelf op schouder*
 
Hmm....doet toch nog niet helemaal wat ik wil....als ik namelijk vanuit "hoofdmenu" doorklik naar "Nieuwe offerte" dan sluit "hoofdmenu" en wil ik dat hij gebruikersID meeneemt naar een veld op "Nieuwe offerte".......is dit mogelijk? Ik probeer dat nu met de code:
Code:
Private Sub Form_Current()
   Me.Datum = Date
   Me.GebruikerID = UserID(Me.cboGebruikerID)
End Sub

Maar dan vertelt hij dat hij de methode of het gegevenslid niet kan weergeven.
 
Laatst bewerkt:
En terecht.... de variabele UserID werkt ook alleen als die Public is gedeclareerd. Nu heb je vermoed ik alleen UserName als public staan.
Bovendien heb je UserID al gevuld, dus de regel
Code:
Me.GebruikerID = UserID(Me.cboGebruikerID)
is zowiezo fout. Dat moet zijn:
Code:
Me.GebruikerID = UserID
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan