Hallo und Hilfe,
ich möchte den CurrentUser mit den Window- Benutzernamen festlegen
Public Function CurrentUser()
CurrentUser = Environ("UserName")
End Function
Nun tritt folgendes ein:
Beispiel: ich heisse auf dem Compter "Müller", alles klappt Aktueller Bearbeiter: "Müller"
Ich ändere zum Test den Namen auf "Meier", Ergebnis Aktueller Bearbeiter: Müller, es bleibt der alte Name bestehen.
Bin nun ratlos und bitte um Hilfe
Gruß Liene
Zitat von: Liene am Januar 11, 2020, 17:52:17
Ich ändere zum Test den Namen auf "Meier"
Und wie machst du das?
Der CurrentUser wird ja über die Funktion Environ ermittelt.
Außerdem was soll das bringen?
Hallo,
und Danke für die schnelle Hilfe.
Ich ändere meine Benutzernamen über Einstellungen, Benutzerkonto, ändern
In Windows wir auch der neue Name beim Starten angezeigt, nur in Access wird die Änderung ignoriert
Anderst herum wird ein Schuh daraus. Man ändert nicht den User vor dem PC indem man den Namen ändert. ;)
Benutzerwechsel ist eine Aufgabe im Windows. Access kann hier nur den Status auslesen.
Gruß Andreas
Hallo Hondo,
Danke für deine Hilfe.
Sorry aber ich versehe deine Antwort noch nicht, ich die die Funktion
Public Function CurrentUser()
CurrentUser = Environ("UserName")
End Function
benutzt und habe als aktuellen Benutzer in Access tatsächlich den Benutzernamen aus meinem Windows-Konto erhalten
Um die Funktion zu testen habe ich mal meinen Benutzernamen geändert. Bei der Windows-Anmeldung erscheint dann auch mein neuer Name.
In Access bleibt aber als CurrentUser mein alter Benutzername.
Was mach ich falsch bzw. wie kann ich das Problem lösen.
Nochmals danke und Gruß
Liene
Ja aber du änderst den User nicht, du ermittelst ihn nur. :P
Ändern wäre Benutzer im Windows abmelden und neuen Benutzer anmelden.
Eventuell ist der neue Benutzername erst nach einem Neustart verfügbar?
Gruß Andreas
Hallo,
ich habe in Windows meinen Benutzer-Namen geändert. Rechner neu gestartet.
In Windows wird mir beim neuen Starten auch der neue Benutzername angezeigt-
Nur mit obiger Funktion wird mir in Access immer mein alter Windows Benutzer-Name als CurrentUser angezeigt.
Wie hat sich Access meinen alter Windows-Benutzernamen gemerkt?
Vielleicht reichen meine Windows - Kenntnisse nicht aus, um das Problem zu lösen???
Gruß Liene
Hallo,
Windows-Anmelde-Name und Account-Name sind zwei verschieden Dinge. Schau mal unter C:\Benutzer nach, ob sich der Account-Name (der Verzeichnisname) auch geändert hat....
Ansonsten solltest Du einen neuen Account mit dem anderen Namen anlegen.
Vielleicht liefert die API-Funktion "getusername" den "richtigen" Namen zurück...
Zitat von: Liene am Januar 11, 2020, 23:00:10
ich habe in Windows meinen Benutzer-Namen geändert. Rechner neu gestartet.
Gehe im Windows Explorer mal auf "This PC", klicke im Kontextmenü "Manage" und gehe auf "Local Users and Groups" in der Baumstruktur".
Dort siehst du den Benutzernamen (Name) und den angezeigten Namen (Full Name).
Environ("UserName") liefert den tatsächlichen Namen, im Windows Login Bildschirm wird der "Full Name" angezeigt.
Hallo Franz,
ist tatsächlich so, C:\Benutzer gibt meinen "alten" Benutzernamen aus!
Der Unterschied zwischen Anmelde-Name und Account-Name war mir nicht bewusst!!
Werde nun mal sehen ob ich die API-Funktion "getusername finde und nutzen kann.
Vielen Dank, bin nun schon etwas weiter
Gruß Liene
Hallo!
Warum willst du auf deinem PC den Usernamen ändern?
Wenn es nur zum Testen deiner Access-Anwendung ist, reicht es doch aus, wenn die Funktion CurrentUser einen anderen Namen zurück gibt.
z. B. mittels Compiler-Anweisungen:
#Const TESTMODUS = 1
#If TESTMODUS = 1 Then
Const TESTUSER = "Meier"
#End If
Public Function CurrentUser() as String
#If TESTMODUS = 1 Then
CurrentUser = TESTUSER
#Else
CurrentUser = Environ("UserName")
#End If
End Function
Anm.: Wenn du eine Prozedur mit dem Namen CurrentUser erstellt, überschreibst du damit die in Access eingebaute CurrentUser-Funktion.
Da du Environ("UserName") verwendest:
Du kannst die Systemvariable UserName ändern.
Dazu Access z. B. über eine Batchdatei starten
set /p NewUser=zu verwendender Benutzer:
echo Starte als %NewUser%
set UserName=%NewUser%
call "C:\Program Files (x86)\Microsoft Office\root\Office16\MSACCESS.EXE" d:\eine\anwendung.accdb
mfg
Josef
Hallo Josef
ZitatWenn du eine Prozedur mit dem Namen CurrentUser erstellt, überschreibst du damit die in Access eingebaute CurrentUser-Funktion.
ja, ich möchte den aktuellen Bearbeiter auf verschiedene Rechnern in einer Mehrfachbenutzer_Anwendung jeweils anders festlegen
Zur Erklärung meines Vorhabens:
ich habe im Formular die Felder: KZErfassung mit Standardwert =Aktueller Benutzer und KZAenderung und folgenden Code:
Private Sub Form_Dirty(Cancel As Integer)
If Not (Me.NewRecord) Then
Me!txtKZAenderung = CurrentUser()
Me!DatumAenderung = Now
Me!txtKZAenderung.Requery
Me!ctlDatumAenderung.Requery
End If
End Sub
damit soll bei Neurerfassung bzw. bei Änderung eines DS die Werte vom jeweiligen Rechner eingetragen werden.
Deshalb möchte dazu den CurrentUser jeweils mit den Windows Namen festlegen
das habe ich bislang mit der Funktion
Public Function CurrentUser()
'CurrentUser = Environ("Meier")
'End Functiongemacht, d.h. ich habe auf jedem Computer den Namen des Computerbenutzers in die Funktion CurrentUser() eingetragen.
Dieses händisches Eintragen wollte ich nun verallgemeinern
Ich hoffe, ich habe mein Ziel verständlich erklärt
Gruß Liene
Nee, war wohl doch nicht so verständlich, noch mal einfach:
Meier sitzt am PC, in seiner DB steht:
Public Function CurrentUser()
CurrentUser = "Meier"
End Function
Müller sitzt am PC, in seiner DB steht
Public Function CurrentUser()
CurrentUser = "Müller"
End Function
wenn Meier einen neuen DS anlegt, steht im Feld Erfassung eben Meier
wenn Müller im DS Änderungen macht steht im Formular;
Erfassung: Meier
Änderung:Müller
Einfache Lösung aber auch die händische Eintragung nicht so sehr "elegant"
Gruß Liene
Dann passt doch die Verwendung von Environ("UserName") bzw. der API getusername.
Wie du Environ("UserName") mit unterschiedlichen Usernamen testen kannst, zeigt ich in Beitrag #10 mit dem Beispiel der Batch-Datei.
Grüße
Josef
Hallo Josef,
Environ("UserName") zeigt mir immer den Windows-Anmeldenamen.
wie ober beschrieben hab ich zum Testen in meinem Benutzer-Konto den Konto-Namen Meier in Müller geändert,
In neuer Anmeldung in Windows wird Müller angezeigt, in DB zeigt mir nach wie vor Meier?
Franz schrieb schon:
ZitatWindows-Anmelde-Name und Account-Name sind zwei verschieden Dinge.
ich weiß nicht, wie ich den Account-Name ändern kann.
Mit API getusername bin ich gerade beim üben, klappt einfach noch nicht
Gruß Liene
Environ("UserName") zeigt dir den Inhalt der Umgebungsvariable UserName an.
Wie du diese verändern kannst, zeigte ich in #10.
Warum willst du nicht den Windows-Anmeldenamen für die Userunterscheidung verwenden?
Gruß
Josef
Hallo Josef
ZitatWarum willst du nicht den Windows-Anmeldenamen für die Userunterscheidung verwenden?
wenn ich (wie oben beschrieben) den Anmelde-Namen von Müller auf Meier ändere, ändere ich nur den Anmelde-Namen in Windows, CurrentUser bleibt hingegen Müller ??
Auch die API GetLogonName oder GetWindowsUser reagieren nicht mit den geänderten Anmelde-Namen ?
Vielen Dank für Deine Geduld
Gruß Liene
Warum willst du den Anmeldenamen eines Windows-Users ändern?
Wenn du die User unterscheiden willst, wird doch jeder seinen eigenen Windows-Accunt haben, oder?
Hallom Josef,
ZitatWarum willst du den Anmeldenamen eines Windows-Users ändern?
weil einige User ihre Anmeldenamen in ungeeignete langen Fantasienamen geändert haben, die nicht zu meinem Konzept passen. Ich vermute nun, dass ein ursprünglicher Name bei der Erstinstallation vergeben wird und dieser immer mit Environ("UserName") ausgelesen wird. Deshalb bleibt eine Änderung des Anmeldenamens mit der Funktion immer unwirksam
Könnte meine Vermutung stimmen und wenn Ja, wie kann man den ursprünlichen Namen ändern
Vielen Dank und Gruß von Liene
oder ursprünglichen Namen auslesen (Statt Anmelde Name)...
Hallo,
Zitatoder ursprünglichen Namen auslesen (Statt Anmelde Name)...
ich versteh immer weniger, was du machen willst oder für was du den "Full Name" brauchst?
Ein angelegter User-Account hat , solange dieser Account nicht gelöscht wird, einen auf dem enstpr. PC eindeutig vergebenen "Benutzernamen". Der ist auch nicht änderbar. Welchen "Anmeldename" ( der intern "Full Name" ,bzw. "Vollständiger Name" heißt. Ich sag jetzt mal "Aliasname" dazu.) der User dann angibt, um sich damit einzuloggen, ist doch in Folge bedeutungslos.
Tipp
Gib mal
Net User Benutzername in der Eingabeauforderung ein. Damit werden Dir die Eigenschaften des angegebenen Benutzernamens (User-Account) angezeigt.
Wenn Du unbedingt den aktuellen Einlognamen finden willst, könntest auch den Eintrag in der Registry auslesen:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\LastLoggedOnDisplayName
Hallo,
jo Franz, so ist das. Das Ziel war/ist in einem Formular bei Erstellung eines neuen DS ein Feld Erfassung den jeweiligen User mit seinem User-Account und im Feld Erfassungsdatum das Datum der Erfassung zu speichern. Wenn ein anderer User auf einem anderem Rechner den DS ändert, soll im Feld Änderung sein User-Account und auch im Feld Änderungsdatum das Datum der Änderung erfasst werden.
Zudem sollten in den Feldern ein Kurzzeichen des Users eingetragen werden, z.B. für Hans Müller HM usw., so das jeder die User erkennbar ist. Ich habe nun versucht, auf die Rechner den Anmeldenamen entsprechend zu verändern
Leider richtigerweise erfolglos. Nun dachte ich, den jeweiligen Account zu ändern, da wie in den Anmeldenamen auch hier sinnfreie Namen vergeben wurden. Richtigereise erfolglos, da nicht möglich:
Meine jetzige Lösung soll so aussehen: Ich schreibe in einer Tabelle alle Usernamen und versehe jedem mit einem sprechenden Kürzel. Dann lese ich bei Erfassung oder Änderung den jeweiligen User aus und übernehme das Kürzel.
Ich hoffe nur, meine Windows- und Access-Kenntnisse steigern sich noch
Ich bedanke mich
Gruß Liene
Hallo,
deine "zukünftige "Lösung ist so auch anzuraten.... ;)
Hallo
nochmals Danke an Alle
Franz: und meine angedachte Lösung klappt sogar wunderbar
Wo finde ich den Knopf "Thema gelöst" ?
Gruß Liene