Hallo Leute,
ich bekomme die Dlookup-Funktion einfach nicht zum laufen.
Ich lasse in einem Formular "Auftrag" beim Laden den Benutzernamen in ein Textfeld "test" auslesen.
Der Benutzername ist aber kein Name bei mir, sondern eine U-NR....In der Tabelle "user" habe ich die Felder "UNR", "Username", "Abteilung. Also ist hier der Username zu der ausgelesenen UNR hinterlegt.
Im Formular Auftrag, möchte ich aber im Feld "Ersteller" den "Username" angezeigt bekommen, damit dieser dann in der Tabelle "auftrag" steht.
Ich weiß, dass ich das mit der dlookup-funktion machen muss, aber wie sieht der Syntax aus?
Ich hoffe Ihr könnt mir dabei helfen!
Vielen Dank schon einmal.
Hallo,
zeige bitte Deine Versuche, damit man gleich die richtigen Objektnamen hat.
Welcher Datentyp ist das Feld "UNR" ?
Hi,
Private Sub test_AfterUpdate()
Me.Ersteller.Value = DLookup("Username", "User", "[UNR] = '" & UNR.Text & "'")
End Sub
Das Feld "UNR" ist ein Textfeld
Hallo.
das Ereignis ist ungeeignet, denn es wird bei einem automatischen Eintrag nicht ausgelöst. Die Eigenschaft .Text ist hier auch falsch.
Du kannst im Feld einfach folgende Formel eintragen.
=DomWert("Username"; "User"; "[UNR] = '" & UNR & "'")Beachte (deutsches Access): DLookup = Domwert und statt Komma Semikolon.
Zitatangezeigt bekommen, damit dieser dann in der Tabelle "auftrag" steht
Das solltest Du aber nicht tun. Auch in den Auftarg gehört nur die UNR. Den Usernamen kannst Du jederzeit ganz einfach über eine Abfrage ermitteln.
Das geht übrigens auch mit dem jetzigen Formular. Einfach beide Tabellen (Auftrag und User) in die Abfrage mit aufnehmen, mit einer Verknüpfung über die UNR. Dann hast Du alle Felder aus allen Tabellen zur Verfügung. Ohne VBA und ohne Formel.
Das mit "domWert" funktioniert nicht. Bekomme den Fehler "#Name?" im Textfeld angezeigt.
Wenn ich deine 2. Variante machen möchte, wie muss dann die Syntax aussehen, dass im Feld "Ersteller" der Username und nicht die "UNR" angezeigt wird.
Ich steh da gerade etwas auf dem Schlauch!
Moin,
wenn es sich um den Windows-Benutzernamen handelt, kannst du die Umgebungsvariable verwenden
=Envirion("username")
Sonst bietet sich an den Namen in einer globalen Variablen vorzuhalten.
Hallo,
-- eine Anzeige in einem Formular-Textfeld unter Verwendung des Steuerelementinhaltes hat keine Speicherung des Wertes in der Tabelle zur Folge
-- welchen Datentyp hat "UNR" in der Tabelle?
Falls Datentyp Zahl, Long und im Steuerelementinhalt eines Form-Textfeldes:
=DomWert("Username"; "User"; "[UNR] = " & [UNR]) ' <edit> fehlerhaftes ME! entfernt </edit>
Falls Datentyp TEXT und im Steuerelementinhalt eines Form-Textfeldes:
=DomWert("Username"; "User"; "[UNR] = '" & [UNR] & "'")
Die "2. Variante" bedeutet:
Ein Formular, das die Auftragsfelder und die UNR anzeigt .
Im Steuerelementinhalt eines weiteren Textfeldes einen der oben genannten Ausdrücke (Datentyp-abhängig) schreiben.
@Franz
Me! kann in einer Formel (Steuerelementinhalt) nicht verwendet werden.
Hallo,
also leider bekomm ich weiterhin den Fehler (#Name?) angezeigt. Das Feld UNR in der Tabelle User ist ein Text. Wie gesagt, bekomme ich im Textfeld "Test" die UNR angezeigt.
Es fehlt praktisch nur der Eintrag des Usernamen in das Feld "Ersteller".
Wie bekomme ich dass nun hin? Einen einfachen Abgleich der UNR aus dem Formular mit der Tabelle User, damit im Formular der Username angezeigt wird....
Ich bekomme es einfach nicht hin...
Hallo,
zeige bitte den aktuell verwendeten Code/Formel.
Und denke daran, den Namen auch in der Tabelle zu speichern ist in jedem Fall überflüssig.
Wie leist Du die UNR aus zur Anzeige in Test ?
Hallo,
Option Compare Database
Option Explicit
Private Declare Function apiGetUserName Lib "advapi32.dll" _
Alias "GetUserNameA" (ByVal lpBuffer As String, _
nSize As Long) As Long
Function fOSUserName() As String
Dim lngLen As Long, lngX As Long
Dim strUserName As String
strUserName = String$(254, 0)
lngLen = 255
lngX = apiGetUserName(strUserName, lngLen)
If lngX <> 0 Then
fOSUserName = Left$(strUserName, lngLen - 1)
Else
fOSUserName = ""
End If
End Function[/code]
Private Sub Form_Load()
test = fOSUserName
End Sub
wenn du Antwort #5 gelesen und umgesetzt hättest, wär das ganze Gedöns obsolet gewesen ...
@el_gomero: diese Variable gibt den gleichen Wert aus. Nämlich die U-Nr!
also bei mir ergeben sowohl fOSUserName als auch Environ("username") den Windows-Anmeldenamen ;)
Aber wie bekomme ich meine "Übersetzung" zum realen Namen des Benutzers aus der Tabelle "User" hin? Ich habe gedacht, dass es über dlookup einfach zu erstellen gehen würde, aber anscheinend habe ich mich da geirrt. :-[
Hallo,
@Jürgen
Du kennst ja nicht die Strukturen von lutschi83.
Es kann ja sein, dass die UNR der Windows Anmeldename ist und in der Usertabelle ein Name hinterlegt ist, der mit dem Anmeldenamen nichts zu tun hat.
@lutschi83
nach der Formel im Feld hatte ich auch gefragt.
Also du hast es genau erfasst. Die UNR ist der Windows-Anmeldename. Welche Formel im Feld meinst du? Private Sub Form_Load()
test = fOSUserName
End Sub
Damit steht im Feld "test" die UNR aus der Windows-Anmeldung. Wie bekomme ich nun den Namen aus der Tabelle "User" in das Feld "Ersteller"???
Hallo,
ich meine die Formel mit dem DomWert.
Aber ich habe gesehen, meine Formel war sowieso falsch.
Versuche es mal so:
=DomWert("Username"; "User"; "[UNR] = '" & Test & "'")
Oder so:
=DomWert("Username"; "User"; "[UNR] = '" & fOSUserName() & "'")
In Letzterem kannst Du auf das Feld Test verzichten.
Versuche das fOSUserName mal mit und ohne Klammerpaar (), bin gerade nicht sicher.
Und noch mal der Hinweis, der Klarname gehört nicht in die Tabelle, der sollte nur angezeigt werden.
In das Feld Ersteller schreibst Du als Standardwert
=fOSUserName()
In jedem neuen Datensatz wird jetzt die UNR eingetragen, was reicht und richtig ist.
=DomWert("Username"; "User"; "[UNR] = '" & UNR & "'")
Habe ich als Steuerelementeinhalt eingetragen. Da bekomme ich den Fehler #Name?
Hallo,
siehe mein Nachtrag in #17.
Super! Danke, hat geklappt!!!!!
Hallo,
was hat jetzt geklappt?
=DomWert("Username"; "User"; "[UNR] = '" & fOSUserName() & "'")
Mit diesem Code, hat es funktioniert. Jetzt bekomme ich den Namen und in einem anderen Feld auch noch die Abteilung angezeigt!
Vielen Dank nochmals!!!
Hallo,
ja, sorry, ich korrigiere das im Beitrag