Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Matrix als Formular darstellen

Begonnen von Tanzbär, Februar 08, 2017, 19:37:38

⏪ vorheriges - nächstes ⏩

Tanzbär

Hallo,
ich habe zwei Tabellen
- Fahrzeugmodell (ID und Modellbezeichnung)
- Ausstattung (ID und Austattungsbezeichnung)

Über eine Kreuztabelle habe ich eine Verknüpfung aus beiden Tabellen erzeugt: ID, Modellbezeichnung, Ausstattungsbezeichnung.

Die Dateneingabe soll in einem Formular in Form einer Matrix erfolgen, in die Spalte die Modellbezeichnung beschreibt und die Zeile die Ausstattungsbezeichnung. Im Schnittpunkt aus jeder Modellbezeichnung und jeder Ausstattungsbezeichnung möchte ich per Auswahlfeld die Verknüpfung erzeugen.

Wie könnte ich eine solche Matrix erstellen?

MzKlMu

#1
Hallo,
ZitatWie könnte ich eine solche Matrix erstellen?
das geht in Access nur mit großem Aufwand, denn eine Kreuztabellenabfrage lässt keine Dateneingabe zu. Auch nicht mit Tricks. In der 3. Tabelle (von Dir Kreuztabelle genannt) wird die die ID des Modells und die ID der Ausstattung (jeweils als Fremdschlüssel) in je einem Datensatz speichert. Nicht die Texte, nur die ID. Also ModellID und AustattungID.
Übrigens, nenn die ID Felder nicht einfach ID, sondern vergib einen tabellenbezogen Namen, sonst blickst Du nicht mehr welche ID gemeint ist, Du brauchst sie ja als Fremdschlüssel. An die Fremdschlüssel hängst Du noch ein _F an.
Dateneingabe kann sehr einfach über ein Hauptformular mit verknüpften Unterformular zur Auswahl der zutreffenden Ausstattung erfolgen.
Die Darstellung kann dann über eine Kreuztabellenabfrage in der gewünschten Form erfolgen. Aber eine Dateneingabe in eine solche Abfrage ist wie gesagt ausgeschlossen.
Gruß Klaus

Tanzbär

Hallo Klaus,
danke für die schnelle Antwort.

Zitat von: MzKlMu am Februar 08, 2017, 19:48:44
Hier liegt eine klassische n:m Beziehung vor zu der 3 Tabellen notwendig sind.
Hier fehlt demzufolge noch eine 3. Tabelle die die ID des Modells und die ID der Ausstattung (jeweils als Fremdschlüssel) in je einem Datensatz speichert.
Eine solche dritte Tabelle habe ich als Kreuztabelle angelegt, mit eigener ID und Modell und Ausstattung als Fremdschlüssel.
Auf dieser Basis habe ich auch ein Hauptformular mit Unterformular erstellt, aber die Eingabe kann ich keinem Nutzer zumuten, da man jede Ausstattung nacheinander aus einem riesigen Dropdown auswählen muss. Da übersieht man schnell mal eine Ausstattung oder wählt sie doppelt aus. Daher die Idee mit der Matrix. Schade, dass das nicht möglich ist.

MzKlMu

#3
Hallo,
ZitatEine solche dritte Tabelle habe ich als Kreuztabelle angelegt, mit eigener ID und Modell und Ausstattung als Fremdschlüssel.
das habe ich später dann noch erkannt und meinen Text oben geändert. Aber Modell und Ausstattung sind als Schlüsselzahlen zu speichern und nicht die Texte selbst (falls es nicht so ist). Und sicherheitshalber noch der Hinweis, dass in den Tabellen direkt keine Nachschlagefelder zu verwenden sind.
Zitateinem riesigen Dropdown auswählen muss
Glaubst Du ernsthaft da wäre eine Matrix besser, nie im Leben  ;D so einen großen Monitor hast Du gar nicht.
Zitatoder wählt sie doppelt aus
Ein zusammengesetzter Index aus den beiden IDs macht ein Doppeleingabe unmöglich und das Vergessen, kannst Du bei der Matrix auch nicht ausschließen.

Ein Dropdown bietet z.B. serienmäßig die Option "Automatisch ergänzen" da bist Du mit jedem Zeichen näher bei der gewünschten Ausstattung. Außerdem würde man die Ausstattungen in Kategorien einteilen (über Fremdschlüssel mit eigener Tabelle für die Kategorien) und könnte dann das riesige Dropdown vorfiltern. Ich halte jede Wette, dass das schneller ist wie die Matrix.  8) Und übersichtlicher ist es auch. Den Monitor musst Du bei so vielen Ausstattungen garantiert scrollen. Hafo und Ufo hast Du auf einem Blick, mit Klartexten für die Ausstattung.
Bei einem Modell sind doch bestimmt nicht mehr als 20-30 Ausstattungen.
Außerdem, was ist bei Dir riesig ?
Gruß Klaus

Tanzbär

Da die Matrix nicht möglich ist, habe ich ein bisschen weiter probiert. Mit folgenden Schritten könnte ich halbwegs das erreichen, was ich möchte:
1. Kreuztabelle ergänzen um ein ja/nein-Feld
2. Anfügeabfrage erstellen aus ID_Modell und ID_Ausstattung, anfügen an die Kreuztabelle.
--> Damit werden alle Modelle mit allen Ausstattungen in der Kreuztabelle verknüpft.
3. In einem Hauptformular erscheinen die Modell und im Unterformular erscheinen über die Kreuzmatrix alle möglichen Ausstattungen und die zutreffenden klicke ich im ja/nein-Feld an.

MzKlMu

#5
Hallo,
ich habe meine Meinung ja bereits kund getan. Ich glaube nach wie vor, dass das Kombi die bessere Lösung ist.

Noch ein Hinweis zu den Nachschlagefern in Tabellen (Du hattest per PN nachgefragt).
Nachschlagefelder sind ein typischer Anfängerfehler sollten in Tabellen vermieden werden. Nachschlagfelder verwendet man ausschließlich als Kombifelder in Formularen und dort erfüllen sie die gleiche Funktionalität. In Tabellen verstellen sie den Blick auf den wahren Inhalt der Felder und gaukeln etwas vor, was gar nicht drin steht. Und dies kann beim Filtern und ähnlichen Aktionen zu erheblichen Problem führen. Wie gesagt, es geht nur um diese Felder in den Tabellen. Auf Formularen (und nur dort) kein Problem.
Siehe auch hierzu:
http://dbwiki.net/wiki/Access_Anf%C3%A4nger:_Die_Nachteile_von_Nachschlagefeldern
Gruß Klaus