Oktober 20, 2020, 11:26:44

Neuigkeiten:

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


Anzeige Materialien in einem Listenfeld nach Auswahl in einem Kombifeld

Begonnen von HubertN, Oktober 05, 2020, 08:37:07

⏪ vorheriges - nächstes ⏩

HubertN

Hallo Access Community,
folgende Frage(n) hätte ich heute.
Ich habe eine Tabelle mit 2 Feldern. Im 1. Feld (Name: System) steht ein Überbegriff und
                                     im 2. Feld (Name: Materialkurztext) stehen die dazugehörigen Produkte.

Jetzt möchte ich in einem Formular, wenn ich im 1. Feld (Kombinationsfeld) ein ,,System" auswähle
im 2. Feld die dazugehörigen Materialien (Materialkurztext) anzeigt werden. Die Materialien sollen
auswählbar sein (Mehrfachauswahl).

z.B.:  1. Feld (Kombinationsfeld)
Kuchen
Obst
Getränke

2. Feld (Listenfeld) z. B.: bei Auswahl ,,Kuchen"
Schwarzwälder
Obstkuchen
Sachertorte
erscheint.

Ich bin überzeugt das da in der Community eine Lösung parat ist und bedanke mich schon
im Voraus.
Gr. HubertN

DF6GL

Hallo,

die Lösung besteht darin, zunächst das (vermutliche) Mehrwertfeld "Materialkurztext" (was haben "Produkte" mit einem "Materialkurztext" zu tun?)  zu entfernen und in eine 2. Tabelle auszulagern.


Beide Tabelle müssen dann über die Schlüsselfelder in Beziehung gesetzt werden.


Wahrscheinlich aber ist der ganze Tabellenaufbau zu überarbeiten und an die Normalisierungsregeln anzupassen.  Siehe dazu u. st. Links 1, 1a und 1b.

Erst wenn das umgesetzt ist, kann über Formulare und darin befindliche Listenfelder-Abhängigkeiten nachgedacht werden.

HubertN

Zitat von: undefined(was haben "Produkte" mit einem "Materialkurztext" zu tun?)
Produkte ist nur ein Beispiel, das Feld heißt Materialkurztext.

So, habe jetzt zwei Tabellen mit jeweils einer ID AutoWert "erzeugt".

Ich habe somit eine mit tblSystem und eine mit tblMaterialkurztext.

Wie schon bemerkt kann ein Feld "System" mehrere Materialien enthalten,
oder umgekehrt mehrere Materialien ein System (wie im Beispiel mit den Kuchen)

DF6GL

Hallo,

Beispiele sollten schon authentisch sein...


Dann lege mal die Beziehungen an und zeige den Screenshot des Beziehungsfensters...

Zeige auch ein paar (authentische) Beispiele der vorhandenen Daten.

MzKlMu

Hallo,

ZitatWie schon bemerkt kann ein Feld "System" mehrere Materialien enthalten, oder umgekehrt mehrere Materialien ein System
Unter diesen Bedingungen geht das mit 2 Tabellen nicht. Ein Feld einer Access Tabelle darf immer nur einen Wert enthalten. Du brauchst daher eine 3. Tabelle die das System mit dem Material über die Schlüsselfelder verbindet. Das Konstrukt mit 3 Tabellen nennt sich dann n:m Beziehung.
Gruß
Klaus

HubertN

Ich möchte das noch einmal anders beschreiben.

Ausgangstabelle (System):
ID System    Materialkurzbezeichnung
1  Obst         Birnen
2  Obst         Äpfel
3  Obst         Bananen
4  Getränke  Bier
5  Getränke  Wein
6  Getränke  Gin
7  Gemüse    Salat
8  Gemüse    Gurke
9  Gemüse    Karotten

Gewünschte Auswahlmöglichkeit in einem Formular:

Kombinationsfeld: Auswahl z.B.: Obst
Anzeige in einem Listenfeld: Birnen, Äpfel, Bananen
usw.
Ich hoffe es einigermaßen verständlich.
Gr. HubertN


MzKlMu

Hallo,
ich gehe davon aus, dass das nur ein unreales Beispiel ist, daher die Frage, kann die Birne auch zu einem anderen System gehören ?
Übertrage die Frage bitte auf Deine realen Bedingungen.
Gruß
Klaus

HubertN

Hallo Klaus,
die realen Daten kann ich leider aus Datenschutzgründen nicht angeben.
Aber das ist ja im Prinzip egal, da der Aufbau der Tabelle genau so ist.
Vielleicht ist die Bezeichnung der Felder (wurde von einer Exceltabelle übernommen)
nicht gut gewählt aber das kann man ja noch ändern.

Zu deiner Frage:
Nein - die Birne muss beim Obst bleiben.
Mir geht es darum das man einen Überblick erhält wenn man "Obst" auswählt,
dann sollen alle dazugehörigen Obstsorten angezeigt werden.

Gr. HubertN

Beaker s.a.

Hallo Hubert,
ZitatAber das ist ja im Prinzip egal, da der Aufbau der Tabelle genau so ist.
Der ist aber falsch, ausser das ist eine Abfrage.
Du brauchst zwei Tabellen; - "Systeme" und "Materialien"
Systeme:
SystemID -> PK (AutoWert, oder ein anderer eindeutiger Wert, optimal: Zahl, LongIteger)
Bezeichnung -> Text

Materialien:
MaterialID -> PK (s.o.)
SystemID_F -> FK (gleicher Datentyp wie in "Systeme")
Bezeichnung -> Text

DS-Herkunft Kombi:
SELECT SystemID, Bezeichnung
FROM Systeme
DS-Herkunft Liste (gesetzt AfterUpdate des Kombis)
DeinListfeld.RowSource = _
    "SELECT MaterialID, Bezeichnung " _
  & "FROM Materialien " _
  & "WHERE SystemID_F = " & Me.DeinKombi

gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

HubertN

Vielen Dank ekkehard,
ZitatDS-Herkunft Liste (gesetzt AfterUpdate des Kombis)
Steh auf der Leitung. Wie soll ich das verstehen?

Ansonsten funktioniert alles soweit. Nur das mit dem Felddatentyp "Zahl" (dein Vorschlag als PK)
muss ich mir noch einmal anschauen, da mir bei der Auswahl "nur" Zahlen angezeigt werden.
Oder habe ich da etwas falsch verstanden?

Gr. HubertN

Beaker s.a.

Hallo Hubert,
ZitatWie soll ich das verstehen?
Wie wär's mit OH.
Zitatda mir bei der Auswahl "nur" Zahlen angezeigt werden.
Das verstehe ich nicht. Wenn du die Anzeige im Kombi meinst, musst
du nur die Spaltenbreiten anpassen. Die erste Spalte *) mit der Zahl
bekommt die Breite 0cm, die zweite mit der Bezeichnung stellst du
nach Belieben ein. Dann zeigt dir das Kombi die Bezeichnung an, die
Zahl (ID) ist aber der Wert, den sich die Liste holt (Kriterium in
WHERE-Klausel).

*) Diese Spalte muss auch die gebundene sein. Die Liste kannst
du genauso einstellen (1. Spalte ausgeblendet)

gruss ekkehard

--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

HubertN

Hallo ekkehard,
wie gesagt "Steh (stand) auf der Leitung".

Habe die Spalten angepasst. Jetzt sieht man alles.
Vielen Dank für die Lösung.
Eine vermeintliche schwere Lösung ist im Endeffekt wieder ganz "einfach" -
wenn man weiß wie.

Gr. HubertN