Hallo,
ich habe ein Problem bei den 3 verknüpften Tabellen:
die Tabellenstruktur ist
tbl_Projekt
NummerProjekt (Autowert) PK
NameProjekt
tbl_PKProjektStatus
NummerProjektStatus (Autowert) PK
NummerProjekt FK
NummerStatus FK
tbl_Status
NummerStatus (Autowert) FK
NameStatus
Ich möchte ein Formular erstellen, bei dem bei Anlage eines neuen Projektes aus den 4 bereits eingefplegten verschiedenen Statusmöglichkeiten per Listenfeld ausgewählt werden kann. Im Hfo wird NameProjekt eingegeben und im Ufo NameStatus.
Leider bezieht sich das Listenfeld NameStatus in den Auswahlmöglichkeiten immer auf die Spalte 1 mit dem PK, und nicht auf den Namen.
Daten in Listenfeld NameStatus:
Steuerelemntinhalt NameStatus
Herkunftstyp Tabelle/Abfrage
Datensatzherkunft Status
Gebundene Spalte 2
Aktiviert ja
Gesperrt nein
der Rest ist leer.
Hat jemand eine Idee?
Vielen Dank!
Hannes
Hallo,
ganz so klar ist es nicht, was Du unter
"Ich möchte ein Formular...."
meinst.
Wenn Du für die Tabelle "tbl_PKProjektStatus" (bzw. den dort hinterlegten Datensätzen) mittels Listenfeld eine Auswahlmöglichkeit aus allen verfügbaren Status ("tbl_Status") herstellen willst, so muss sich das Listenfeld im (Endlos-Unter-)Formular mit Bezug auf Tabelle "tbl_PKProjektStatus" befinden und solche Einstellungen haben:
Steuerelementinhalt: NummerStatus
Herkunftstyp: Tabelle/Abfrage
Datensatzherkunft: Select NummerStatus, NameStatus from tbl_Status
Gebundene Spalte: 1
Spaltenanzahl: 2
Spaltenbreiten: 0cm;3cm
Stark, vielen Dank, jetzt hat man die richtigen Auswahlmöglichkeiten. Allerdings hat kann ich das Feld jetzt nicht mit dem Status belegen, obwohl die Auswahlmöglichkeiten bestehen. Im Feld steht auch (AutoWert), obwohl ein Text rein muss.
Für mein Verständnis:
In "Steuerelementinhalt" gibt man den PK der Herkunftstabelle an, und in "Datensatzherkunft" dann den Inhalt mit
-SLECT from- Anweisung, wobei man durch 0cm Spaltenbreite das "SELECT NummerStatus" ausblendet ?
Warum reicht "SELECT NameStatus FROM Status" mit Spaltenzahl 1 nicht?
Grüße Hannes
Die 2 Spalten stellen sicher, dass der PK gespeichert wird. Falls falsch, bitte korrigieren :)
Hallo,
ZitatIn "Steuerelementinhalt" gibt man den PK der Herkunftstabelle an, und in "Datensatzherkunft"
Nein, Steuerelementinhalt wird das Feld der Zieltabelle die den PK der Herkunftstabelle als Fremdschlüssel speichern muss.
ZitatWarum reicht "SELECT NameStatus FROM Status" mit Spaltenzahl 1 nicht?
Weil Du die Zahl in der Zieltabelle speichern musst und nicht den Text.
Sorry für die späte Antwort, war ein paar tage internetfrei unterwegs. stmal Danke für die Erklärung. momentan habe ich immer noch das Problem der zwar richtigen Auswahlmöglichkeiten in "NameStatus" , aber es kann nicht mit einer der Möglichkeiten belegt werden.
Welche Übersicht an den gängigsten SQL-Anweisungen ist die Beste? Bin gar nicht auf die Idee gekommen, das man das i.d.F. mit einer Anweisung machen muss.
Grüße Hannes
Hallo,
und wo hakt es dann jetzt noch?
Kannst Du nicht ein kleines Beispiel (Access2003!) erstellen und hier mal hochladen?
Ja klar, wo kann ichs reinstellen?
Hallo,
na hier im Forum, siehe erweiterte Optionen.
DB bitte vorher komprimieren/reaprieren und dann zippen (oder Rar).
So, Problem ist wie gesagt das Listenfeld im Formular ProjektStatus, welches sich nicht belegen lässt...
[Anhang gelöscht durch Administrator]
Ich seh gerade, schreibgschützt sieht man die 5 Auswahlmöglichkeiten aus tbl_Status im Ufo nicht.
Hallo,
wie ich bereits weiter oben sagt, muss das Feld an das Fremdschlüsselfeld gebunden werden. Da man Primärschlüssel und Fremdschlüssel immer zweifelsfrei unterscheiden können muss, hänge ich an den Fremdschlüssel immer noch ein _F an.
In einer DB sollte es keine gleichen Namen geben, auch nicht in unterschiedlichen Tabellen. Das spart viele Ärger und Arbeit.
Geänderte DB anbei.
PS:
Ein Kombinationsfeld wäre hier besser geeignet als ein Listenfeld.
[Anhang gelöscht durch Administrator]
Ok Super, jetzt funktionierts, Kombinationsfreld wollte ich eigenltich haben, habe es whl verwechselt.
Ich möcht allerdings noch einschränken, das pro Projekt immer nur ein Status möglich sein kann. Dieser kann sich im Verlauf des Projektes ändern, aber momentan können ja parallel mehrere möglich sein.
Hallo,
ZitatIch möcht allerdings noch einschränken, das pro Projekt immer nur ein Status möglich sein kann.
Das bedarf der Erläuterung.
Kann ein Projekt im Laufe seiner Dauer nicht seinen Status wechseln?
Und willst Du diesen Wechslen nicht per Datum festhalten?
Wenn beide Fragen mit Nein beantwortet werden, ist die Zwischentabelle überflüssig. Dann genügt ein Feld in der
Projekttabelle für den Fremdschlüssel des Status.
Kann ein Projekt im Laufe seiner Dauer nicht seinen Status wechseln?
Und willst Du diesen Wechslen nicht per Datum festhalten?
Beides ja. Momentan kann ich aber bei Neuanlage einses Projektes gleich mehrere Status angeben. Es sollte aber immer nur einer gleichzeitig möglich sein, also nur eine Zeile im Formular bei Status (ich verwende jetzt ein Kombinationsfeld).
Hallo,
ZitatMomentan kann ich aber bei Neuanlage einses Projektes gleich mehrere Status angeben.
Das ist ja auch richtig so. Wenn Du jeden Status mit Datum festhalten willst, kannst du das nicht ändern. Das Datum bestimmt den aktuellen Status. Du kannst höchtens steuern, dass die Reihenfolge eingehalten wird, wenn es überhaupt eine Reihenfolge für den Status gibt.
Hallo Hannes,
ZitatZitatMomentan kann ich aber bei Neuanlage einses Projektes gleich mehrere Status angeben.
Das ist ja auch richtig so. Wenn Du jeden Status mit Datum festhalten willst, kannst du das nicht ändern. Das Datum bestimmt den aktuellen Status. Du kannst höchtens steuern, dass die Reihenfolge eingehalten wird, wenn es überhaupt eine Reihenfolge für den Status gibt.
Du kannst das Kombi bei Neuanlage ja auch sperren, und es mit einem Startwert belegen.
Oder Du änderst die RowSource des Kombis, so dass bei Neuanlage nur ein Wert
(ist der erste Wert eigentlich immer der gleiche?) angezeigt wird.
gruss ekkehard