Hallo Access-Gurus
Ich möchtte mittels Button das Feld "CreatedBy" mit dem Benutzernamen füllen. Hierfür soll der Wert aus dem Feld "Optionswert" in der Tabelle "tblOptionen" (immer nur 1 Datensatz in dieser Tabelle vorhanden) mit den "BenutzerID"s aus der Tabelle "tblUser" verglichen werden. Dort wo die ID auf übereinstimmt soll das entsprechende Feld "Benutzername" ausgelesen werden.
Tabelle: tblOptionen
Felder: ID (immer 1), Optionswert (enthält angemeldete UserID als Zahl)
Tabelle tblUser
Felder: BenutzerID (Zahl), Benutzername (ausgeschriebener Name)
also, was schreibe ich in das Klick-Ereignis:
Me!CreatedBy = ?
Beste Grüsse
Daniel
ich hab's bereits mit dlookup ohne erfolg versucht:
Me!CreatedBy = DLookup("[Benutzername]", "tblUser", "[BenutzerID] = tblOptionen.[Optionswert]")
Hallo,
versuche es so:
ZitatMe!CreatedBy = DLookup("[Benutzername]", "tblUser", "[BenutzerID] = " & Me![Optionswert]")
Das Feld mit dem Optionswert muss im Formular vorhanden sein.
Das Vorhaben an sich ist aber überflüssig. Da Du den Optionswert hast, ist die Spalte CreatedBy nicht notwendig.
Über eine Abfrage kommst Du jederzeit auch an den Namen. Üblicherwiese speichert man in abhängigen Tabellen auch nicht den Klartext, sondern immer nur die ID (den Primärschlüssel als Fremdschlüssel).
Hi MzKIMu
Danke für den Tip.
So hatte ich das bereits - Primärschlüssel wird als fremdschlüssel gespeichert. Wie zeige ich jetzt in einem Formular statt der Nummer den Benutzernamen an, resp. wie ist die Abfrage zu erstellen...
Beste Grüsse
Daniel
Hallo,
nimm in die Abfrage für das Formular beide Tabellen auf, mit der Beziehung. Dann hast Du alle Felder zur Anzeige.
nehme ich die tblUser auch in die Abfrage erhalte ich eine Fehlermeldung "type missmatch in expression"
[Anhang gelöscht durch Administrator]
Hallo,
die Fremdschlüsselfelder haben totsicher den falschen Datentyp...
Hallo,
TrashedBy ist in der Tabelle "tblHistory" überflüssig und demzufolge auch die Beziehung. Ein solche Beziehung ist ja auch völlig sinnlos. Das hatte ich auch nicht vorgeschlagen.
@DF6GL - danke für den Tip.
tblKunden, Feld ID
Feldtyp: Autowert, Feldgrösse: Long Integer, neue Werte: Inkrement, Indiziert: Ja (Ohne Duplikate)
tblHistory, Feld ID
Feldtyp: Autowert, Feldgrösse: Long Integer, neue Werte: Inkrement, Indiziert: Ja (Ohne Duplikate)
tblHistory, Feld FI
Feldtyp: Zahl, Feldgrösse: Long Integer, - neue Werte: Feld nicht vorhanden, Indiziert: Nein
@MzKIMu - wo würdest du Vermerken wer einen History Eintrag gelöscht hat?
Gruss, Daniel
Hallo,
Zitatwo würdest du Vermerken wer einen History Eintrag gelöscht hat?
Das versteh ich jetzt nicht, wenn Du erfassen willst, wer einen History Eintrag löscht, brauchst Du eine Tabelle für die History der History.
MzKIMU
Schau dir mal das an: http://www.access-im-unternehmen.de/index1.php?id=300&BeitragID=672
Gruss, Daniel
Hallo,
und was willst Du mit dem Link jetzt sagen, was Du tun willst, ist mir schon klar. Du willst ja jetzt aber Aktionen in der History dokumentieren. Oder wie sonst ist dieser Satz zu erklären:
Zitatwo würdest du Vermerken wer einen History Eintrag gelöscht hat?
Ich versuche Dir ja nur die ganze zeit klar zu machen, dass Du nicht den namen zu speichern brauchst, sondern nur dessen ID.
MzKIMu
Ok, das hab ich verstanden und auch so umgesetzt. In der Tabelle wird die ID des Benutzers, nicht der Name gespeichert.
Dennoch möchte ich im Formular nicht die ID anzeigen, sondern den Namen. Aktuell wird im Formular das Feld "CreatedBy" angezeigt und entsprechend die ID des Users augegeben.
Kann ich mir nun ein Textfeld erstellen und dort mittels vba den Benutzernamen anzeigen lassen?
Habe hierfür eine Abfrage "qryBenutzer" erstellt, die alle BenutzerIDs und Benutzernamen ausgibt.
Mittels Ereignis beim Laden des Formulars schreibe ich dann
Private Sub Form_Load()
If Me!CreatedBy = "" Then
Else
Me!realname = "SELECT qryBenutzer.Benutzername FROM qryBenutzer " & "WHERE qryBenutzer.BenutzerID =" & Me!CreatedBy
End If
End Sub
funzt aber nicht...
[Anhang gelöscht durch Administrator]
Hallo,
3 Möglichkeiten:
1) Ein Kombifeld mit Datenherkunft zur Usertabelle benutzen: Select Nachname from tblUser
2) Ein Textfeld mit Steuerelementinhalt benutzen: =Dlookup("Benutzername";"tblUser";"BenutzerID=" & [CreatedBy])
3) Verknüpfende Abfrage über beide Tabellen für das Form benutzen und Formularfeld "Realname" an das Abfragefeld "Nachname" binden
DF6GL - you're the man!
Textfeld mit Steuerelementinhalt hat auf anhin geklappt. Thanks alot!
Hallo,
Du hast einfach Glück, dass ich heute mal nicht gemäß meines Signatur-Spruches handle ;D
ich verneige mich in ehrfurcht ::)
Hallo,
wenn Du meinen Rat aus meiner Antwort #7 gefolgt wärest, würde auch die Abfrage funktionieren. Und das wäre nach meiner Auffassung die beste (und schnellste) Lösung. Vorschlag 3 von Franz.