Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Liene am Januar 11, 2020, 17:52:17

Titel: currentuser festlegen
Beitrag von: Liene am Januar 11, 2020, 17:52:17
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



Titel: Re: currentuser festlegen
Beitrag von: markusxy am Januar 11, 2020, 18:02:43
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?
Titel: Re: currentuser festlegen
Beitrag von: Liene am Januar 11, 2020, 18:27:28
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
Titel: Re: currentuser festlegen
Beitrag von: Hondo am Januar 11, 2020, 20:43:16
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
Titel: Re: currentuser festlegen
Beitrag von: Liene am Januar 11, 2020, 22:08:32
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
Titel: Re: currentuser festlegen
Beitrag von: Hondo am Januar 11, 2020, 22:31:25
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
Titel: Re: currentuser festlegen
Beitrag von: Liene am Januar 11, 2020, 23:00:10
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
Titel: Re: currentuser festlegen
Beitrag von: DF6GL am Januar 12, 2020, 10:50:33
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...
Titel: Re: currentuser festlegen
Beitrag von: PhilS am Januar 12, 2020, 11:33:56
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.
Titel: Re: currentuser festlegen
Beitrag von: Liene am Januar 12, 2020, 11:37:21
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
Titel: Re: currentuser festlegen
Beitrag von: Josef P. am Januar 12, 2020, 12:20:33
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
Titel: Re: currentuser festlegen
Beitrag von: Liene am Januar 12, 2020, 13:55:33
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 Function

gemacht,  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
Titel: Re: currentuser festlegen
Beitrag von: Liene am Januar 12, 2020, 15:34:02
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
Titel: Re: currentuser festlegen
Beitrag von: Josef P. am Januar 12, 2020, 16:00:35
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
Titel: Re: currentuser festlegen
Beitrag von: Liene am Januar 12, 2020, 16:23:45
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
Titel: Re: currentuser festlegen
Beitrag von: Josef P. am Januar 12, 2020, 16:42:17
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
Titel: Re: currentuser festlegen
Beitrag von: Liene am Januar 12, 2020, 17:27:22
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


Titel: Re: currentuser festlegen
Beitrag von: Josef P. am Januar 12, 2020, 18:17:13
Warum willst du den Anmeldenamen eines Windows-Users ändern?
Wenn du die User unterscheiden willst, wird doch jeder seinen eigenen Windows-Accunt haben, oder?
Titel: Re: currentuser festlegen
Beitrag von: Liene am Januar 12, 2020, 20:00:11
 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
Titel: Re: currentuser festlegen
Beitrag von: Liene am Januar 13, 2020, 12:41:52
oder ursprünglichen Namen auslesen (Statt Anmelde Name)...
Titel: Re: currentuser festlegen
Beitrag von: DF6GL am Januar 13, 2020, 13:11:28
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
Titel: Re: currentuser festlegen
Beitrag von: Liene am Januar 13, 2020, 15:01:41
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


Titel: Re: currentuser festlegen
Beitrag von: DF6GL am Januar 13, 2020, 15:13:23
Hallo,

deine "zukünftige "Lösung ist so auch anzuraten....    ;)


Titel: Re: currentuser festlegen
Beitrag von: Liene am Januar 13, 2020, 22:24:37
Hallo
nochmals Danke an Alle

Franz: und meine angedachte Lösung klappt sogar wunderbar

Wo finde ich den Knopf "Thema gelöst"  ?
Gruß Liene