Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

currentuser festlegen

Begonnen von Liene, Januar 11, 2020, 17:52:17

⏪ vorheriges - nächstes ⏩

Liene

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




markusxy

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?

Liene

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

Hondo

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

Liene

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

Hondo

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

Liene

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

DF6GL

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...

PhilS

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.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Liene

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

Josef P.

#10
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

Liene

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

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

Josef P.

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

Liene

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