Neuigkeiten:

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

Mobiles Hauptmenü

felder vergleichen und entspechender wert schreiben

Begonnen von boogieman, September 28, 2011, 11:13:25

⏪ vorheriges - nächstes ⏩

boogieman

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


boogieman

ich hab's bereits mit dlookup ohne erfolg versucht:

Me!CreatedBy = DLookup("[Benutzername]", "tblUser", "[BenutzerID] = tblOptionen.[Optionswert]")

MzKlMu

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).
Gruß Klaus

boogieman

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

MzKlMu

Hallo,
nimm in die Abfrage für das Formular beide Tabellen auf, mit der Beziehung. Dann hast Du alle Felder zur Anzeige.
Gruß Klaus

boogieman

nehme ich die tblUser auch in die Abfrage erhalte ich eine Fehlermeldung "type missmatch in expression"

[Anhang gelöscht durch Administrator]

DF6GL

Hallo,

die Fremdschlüsselfelder haben totsicher den falschen Datentyp...
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

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

boogieman

@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

MzKlMu

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

boogieman

MzKIMU

Schau dir mal das an: http://www.access-im-unternehmen.de/index1.php?id=300&BeitragID=672

Gruss, Daniel

MzKlMu

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

boogieman

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]

DF6GL

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

boogieman

DF6GL - you're the man!

Textfeld mit Steuerelementinhalt hat auf anhin geklappt. Thanks alot!