Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

dlookup-Funktion

Begonnen von lutschi83, November 18, 2015, 09:13:22

⏪ vorheriges - nächstes ⏩

lutschi83

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.

MzKlMu

Hallo,
zeige bitte Deine Versuche, damit man gleich die richtigen Objektnamen hat.
Welcher Datentyp ist das Feld "UNR" ?
Gruß Klaus

lutschi83

Hi,

Private Sub test_AfterUpdate()
Me.Ersteller.Value = DLookup("Username", "User", "[UNR] = '" & UNR.Text & "'")
End Sub


Das Feld "UNR" ist ein Textfeld

MzKlMu

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.

Gruß Klaus

lutschi83

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!

el_gomero

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.
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

DF6GL

#6
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.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

MzKlMu

@Franz
Me! kann in einer Formel (Steuerelementinhalt) nicht verwendet werden.
Gruß Klaus

lutschi83

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

MzKlMu

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 ?
Gruß Klaus

lutschi83

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



el_gomero

wenn du Antwort #5 gelesen und umgesetzt hättest, wär das ganze Gedöns obsolet gewesen ...
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

lutschi83

@el_gomero: diese Variable gibt den gleichen Wert aus. Nämlich die U-Nr!

el_gomero

also bei mir ergeben sowohl fOSUserName als auch Environ("username") den Windows-Anmeldenamen ;)
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

lutschi83

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