inlognaam onthouden

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

ran

Gebruiker
Lid geworden
22 dec 2006
Berichten
58
Ik heb een inlogmenu. Hoe kan ik ervoor zorgen dat de inlognaam onthouden wordt in het volgende scherm(menu)?
 

Bijlagen

  • ok.rar
    ok.rar
    69,9 KB · Weergaven: 37
Als je een Public variabele declareert in een module (je hebt er één) kun je daar een waarde aan toewijzen die je verder kunt gebruiken in andere formulieren.
 
Ik heb vrijwel geen verstand van vba. Dus ik weet niet goed waar ik wat moet zetten in de module.

Op internet lees ik dat in een multi useromgeving dit niet goed werkt. Klopt dit?
 
Dan gebruik jij een ander internet dan ik ;) Ik zou niet weten waarom niet. Ik heb er zelf in ieder geval geen probleem mee... Wat wel mee kan spelen, is dat je een variabele maar één keer kunt vullen, dus een volgende gebruiker die inlogt zal de variabele vullen met zijn naam. Ik vermoed dat je daar aan refereert? Persoonlijk gebruik ik daarom geen inlogtabellen met aparte gebruikersgegevens. In mijn db's loggen de gebruikers in op basis van de Usernaam op de pc. Dat heeft als nadeel dat je voor elke gebruiker wel een eigen account moet hebben. Een algemene account die door meerdere personen gebruikt wordt (Bewakers bijvoorbeeld) gaat dan niet werken.
De Eigen inlognaam lees je uit met het commando ENVIRON("Username"). En daar kun je verder ook mee werken in andere formulieren. Ik gebruik dus de Username in mijn tabel Users om de rechten vast te leggen, en controleer bij elk formulier de rechten van die ingelogde user.
 
Dat environ() had ik ook gevonden. Het is alleen niet echt flexibel met mijn inlogbestandje. Omdat je vastzit aan de ingelogde werknemer op de pc.
Als die public variabele goed werkt wil k dat gbruiken.
Kun je me helpen met die module?
 
Wat bedoel je met 'niet echt flexibel'? Je hebt in je db één module. Daar zet je bovenin deze code:

Code:
Option Compare Database
Option Explicit
Public sUser As String

Vervolgens kun je op elke plek waar je wilt de variabele vullen met een gebruikersnaam, en op een andere plek (formulier, rapport) weer opvragen.
 
Moet het niet
public user as string zijn?

Als ik dit invul bij controlsource werkt het niet?
=[Forms]![frm_main]![user_id]
 
Een variabele mag elke naam krijgen; persoonlijk vermijd ik 'ingebouwde' functie(namen) voor variabelen, dus daarom declareer ik 'm als sUser. Ik weet niet waar je die code invoert, maar je moet, als je een public variabele gebruikt, deze eerst vullen:

Code:
Private Sub txtInlognaam_AfterUpdate()
    sUser = Me.txtInlognaam
End Sub

En op het vervolgformulier kun je dan sUser weer gebruiken:

Code:
Private Sub Form_Current()
    MsgBox sUser
End Sub
 
Ik krijg nu een pop up schermpje(msgbox) met de ingevulde naam.
Het moet echter in een textbox verschijnen, welk commando heb je hiervoor nodig?
Ik neem aan dat je een textbox moet maken en bij control source dit commando geven?
 
Laatst bewerkt:
Simpel gezegd: ja. je wijst de variabele (sUser in mijn geval) toe aan een textbox.
Code:
Me.txtUser = sUser
Dat kan wanneer je dat wilt. Als het een eenmalige actie is, zet je de code bij de gebeurtenis Openen. <Bij Aanwijzen> wordt bij elk volgend record weer afgevuurd, en dat zal niet altijd nodig zijn.
 
Ken die op slot?
 
Het vervolgens laten zien van deze inlognaam op een subformulier lukt me. Dit subformulier dient om data weg te schrijven in tabel. Echter ik krijg een foutmelding dat dit veld gerelateerd moet zijn aan een opzoektabel :werknemers.
Is dit lastig te maken?
 
Waarschijnlijk niet, maar je geeft wat weinig informatie... Heb je het het veld gekoppeld aan je tabel, of is het een niet-afhankelijk tekstveld? Gebruik je een query om je formulier bij te werken, of is alles aan het formulier gekoppeld? Zit er een opzoekveld bij? Wat probeer je op te slaan via het tekstveld?
 
tbl werknemers bevat de inloginformatie.
Deze is gekoppeld aan tabel 2 waar de gewerkte uren in komen te staan per werknemer

Form1 heeft een subformulier. De info op dit subformulier wordt ingevuld en dit komt in tabel 2. Na het inloggen staat op het hoofdormulier staat automatisch de inlognaam. Wanneer ik deze koppel via: forms!form1!user_id aan het subform, komt de inlognaam te staan in het subform alleen kan ik niet naar een nieuwe regel vanwege een koppelingsfout.

tbl werknemers moet worden gekoppeld aan die automatische inlognaam(user_id) denk ik
Alleen hoe? liever niet via vba omdat ik daar weinig van afweet
 
Ik vermoed dat in je tabel met werkuren het WerknemerID wordt opgeslagen, en dat je op het formulier de werknemer Naam laat zien. En die kun je dan niet automatisch overnemen in je subformulier. Je kunt in je subformulier wel een verwijzing maken naar je hoofdformulier, zoals je gedaan hebt, maar ik zou er dan een ander tekstveld voor gebruiken. Je hebt dus op je hoofdformulier namelijk nog een tekstveld nodig met het WerknemerID, dat je opzoekt op basis van de werknemer Naam. Je kunt dat (onafhankelijke) tekstveld wel vullen met de DLookup functie.
 
Die werknemerId(combobox) op het hoofdformulier is er, die werkt ook met het subformulier.

De inlognaam in een subformulier opslaan gaat dus niet lukken begrijp ik?
 
Ik raak je even kwijt.... Als je een keuzelijst hebt gemaakt voor de werknemer, waarom wil je die dan nog als tekstvak op het formulier hebben? En waarom wil je in het subformulier de Naam laten zien en niet het WerknemersID?
 
In principe ziet het zo uit:

inlog-->form-->subform-->tabel2(-->werknemer)

De inlognaam moet het hele proces worden meegenomen. Dit lukt me tot het subform maar daarin geeft hij een foutmelding mbt relaties.

Ik had eerst op het formulier een combobox staan met werknemer_Id die de info wel verwerkte tot de tabel(ik had nog geen inlog gemaakt). Het is mooier wanneer na het inloggen de user bekend blijft.
 
Je haalt vermoed ik een aantal zaken door elkaar.... De inlognaam is de naam van de werknemer, en niet zijn WerknemerID. In al je gekoppelde tabellen waarin je werknemersgegevens opslaat heb je het WerknemerID nodig, en niet de naam van de werknemer. Daar loop je nu ook tegen aan volgens mij: je probeert de naam op te slaan, en niet het WerknemerID. Als je het jezelf makkelijk wilt maken, maak je dus twee Public variabelen: één voor de naam, en één voor de WerknemerID. De laatste kun je bij het inloggen laten opzoeken met DLookup, of met een Recordset. Anders blijf je continue op al je formulieren die DLookup nodig hebben om het WerknemerID op te zoeken. Werkt vertragend, en maakt het ontwerpen een stukje lastiger.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan