Supportnet / Forum / Datenbanken
Bezeichnungsfelder dynamisch ändern
Frage
Hallo zusammen,
ich habe ein Formular mit Unterformular, in dem 30 werte erfasst werden müssen.
Normalerweise verwendet Access ja die Spaltennamen (oder per Hand fest eingegebene Werte) für das Bezeichnungsfeld.
Nun hätte mich mal interessiert ob und wie ich access dazu bringen kann dort einen Eintrag aus einer anderen Tabelle (Name) anzugeben.
Ich hab mir schon überlegt, das ich im Bezeichnungsfeld eine id eintrage, die dann "irgendwie" mit der Tabelle mit den richtigen Bezeichnern vergleiche und in ein neues Feld einsteuere. (die orginal bezeichnungsfelder könnte ich ja ausserhalb des sichtbaren forms lagern). Nur kann ich nirgends ein Bezeichnungsfeld als "Quelle" verwenden.
Wär toll wenn einer von euch eine Idee hätte.
Gruß und Dank
Targon
Antwort 1 von Targon
*schieb*
also über extra textfelder scheints nicht zu funktionieren..
sonst jemand ne bessere idee?
Danke Targon
also über extra textfelder scheints nicht zu funktionieren..
sonst jemand ne bessere idee?
Danke Targon
Antwort 2 von El Bobbele
Hallo Targon!
Aber sicher funktioniert das über Textfelder. Wenn deine Spaltennamen in einer anderen Tabelle liegen, dann musst du per Abfrage dafür sorgen, dass Spaltenname und Wertespalte sich in derselben Datenherkunft befinden. Anschliessend bestückst du dein Endlosformular mit zwei Textfeldern und löschst die zwei hinzugefügten Bezeichnungsfelder. Das eine Textfeld bindest du an die Namensspalte, das andere an die Wertspalte. Die Eigenschaften des ersten Textfeldes stellst du folgendermaßen ein:
Gesperrt: Ja
Aktiviert: Nein
Hintergrundart: Transparent
Spezialeffekt: Flach
Jetzt sieht das Textfeld schon fast aus wie ein Bezeichnungsfeld, fehlt nur noch der Doppelpunkt:
Steuerelementinhalt: =[Spaltenname] & ":"
Achte aber unbedingt drauf, dass das Textfeld nicht denselben Namen hat wie die Spalte in der Datenherkunft, ansonsten siehst du einen #Fehler. Setze vor dem Namen des Textfeldes ein "txt", dann ist das kein Problem mehr.
Gruss
El Bobbele
Aber sicher funktioniert das über Textfelder. Wenn deine Spaltennamen in einer anderen Tabelle liegen, dann musst du per Abfrage dafür sorgen, dass Spaltenname und Wertespalte sich in derselben Datenherkunft befinden. Anschliessend bestückst du dein Endlosformular mit zwei Textfeldern und löschst die zwei hinzugefügten Bezeichnungsfelder. Das eine Textfeld bindest du an die Namensspalte, das andere an die Wertspalte. Die Eigenschaften des ersten Textfeldes stellst du folgendermaßen ein:
Gesperrt: Ja
Aktiviert: Nein
Hintergrundart: Transparent
Spezialeffekt: Flach
Jetzt sieht das Textfeld schon fast aus wie ein Bezeichnungsfeld, fehlt nur noch der Doppelpunkt:
Steuerelementinhalt: =[Spaltenname] & ":"
Achte aber unbedingt drauf, dass das Textfeld nicht denselben Namen hat wie die Spalte in der Datenherkunft, ansonsten siehst du einen #Fehler. Setze vor dem Namen des Textfeldes ein "txt", dann ist das kein Problem mehr.
Gruss
El Bobbele
Antwort 3 von Targon
Hi
und genau in dem "Wertebinden" ist wohl das problem.
ich hab folgende beiden tabellen
tbl_evu_names mit u.a. diesen Spalten
evu_id [autowert]
bezeichnung [namensfeld das in das bez.feld soll]
str
nr
ort
[etc]
--------
tbl_evu_mengen
materialnr
1
2 [nr = evu_id]
3
4
5
.. bis 34
also geht das mit der Abfrage nich - oder doch?
und genau in dem "Wertebinden" ist wohl das problem.
ich hab folgende beiden tabellen
tbl_evu_names mit u.a. diesen Spalten
evu_id [autowert]
bezeichnung [namensfeld das in das bez.feld soll]
str
nr
ort
[etc]
--------
tbl_evu_mengen
materialnr
1
2 [nr = evu_id]
3
4
5
.. bis 34
also geht das mit der Abfrage nich - oder doch?
Antwort 4 von El Bobbele
Hallo!
Klar geht das mit Abfragen, genau dafür sind sie ja da. :-)
Das war schon mal ne gute Idee von dir, die Tabellendefinitionen aufzuführen, dann gibt es im Gegenzug die passende SQL-Anweisung:
Heisst der Fremdschlüssel in tbl_evu_mengen tatsächlich "2"? Wenn nicht, dann "[2]" durch den richtigen Namen ersetzen. Die SQL-Anweisung ist jedenfalls schon mal ne passende Grundlage. Im Abfrage-Editor kannst du ja dann weitere benötigte Felder hinzufügen usw. Ausserdem wird die Sache mit dem Doppelpunkt bereits in der Abfrage abgewickelt, d.h. die Steuerelement-Eigenschaft des Feldes im Formular muss nicht gesondert behandelt werden. Nur die Formatierung müsstest du von meinem ersten Beitrag noch übernehmen. Der Feldname kann jetzt auch beibehalten werden, da die Steuerelementinhalt-Eigenschaft in der Phase nicht mehr berechnet wird - das macht ja schon die Abfrage.
Gruss
El Bobbele
Klar geht das mit Abfragen, genau dafür sind sie ja da. :-)
Das war schon mal ne gute Idee von dir, die Tabellendefinitionen aufzuführen, dann gibt es im Gegenzug die passende SQL-Anweisung:
SELECT tbl_evu_mengen.*, tbl_evu_names.bezeichnung & ":" AS bez
FROM tbl_evu_mengen INNER JOIN tbl_evu_names
ON tbl_evu_mengen.[2] = tbl_evu_names.evu_id;Heisst der Fremdschlüssel in tbl_evu_mengen tatsächlich "2"? Wenn nicht, dann "[2]" durch den richtigen Namen ersetzen. Die SQL-Anweisung ist jedenfalls schon mal ne passende Grundlage. Im Abfrage-Editor kannst du ja dann weitere benötigte Felder hinzufügen usw. Ausserdem wird die Sache mit dem Doppelpunkt bereits in der Abfrage abgewickelt, d.h. die Steuerelement-Eigenschaft des Feldes im Formular muss nicht gesondert behandelt werden. Nur die Formatierung müsstest du von meinem ersten Beitrag noch übernehmen. Der Feldname kann jetzt auch beibehalten werden, da die Steuerelementinhalt-Eigenschaft in der Phase nicht mehr berechnet wird - das macht ja schon die Abfrage.
Gruss
El Bobbele

