Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Richtige Beziehungen zwischen Tabellen für Auswahllisten





Frage

Hallo zusammen, ich erstelle derzeit eine unter MS Access 2000 eine DB für den Vertrieb. Es werden für bestimmte Produkte (z. B. Autos) bestimmte Artikel (z. B. Reifen) angeboten. Dazu habe ich eine Tabelle mit allen (ca. 100) verfügbaren Artikeln angelegt. In einer anderen Tabelle sind alle (derzeit ca. 1500) Fahrzeuge, mit Hersteller, Modell und via Auswahlliste aus der Artikeltabelle die passenden Artikel hinterlegt und mit einer 1:n-Beziehung verknüpft. Bei den Artikeln sehe ich also welcher Reifen bei welchen Fahrzeugen verwendet wird. Soweit so gut. Jetzt zu meinem Problem: In der Kundentabelle sollen drei Felder sein, die Ihre Daten via Auswahlliste aus der Artikelliste beziehen. Man soll dann in dem Feld des Herstellers eine Marke wählen (da geht es schon los, bei 50 Einträgen zu BMW wird in der Auswahlliste auch 50 mal BMW angezeigt) Im nächsten Feld soll das Modell gewählt werden (der nächste Schwachpunkt bisher: auch hier finde ich Eonträge, die nicht zu BMW passen). Im letzten Feld soll dann aus der Kombination Hersteller&Modell der entsprechende Artikel automatisch eingtragen werden. Wie soll ich da vorgehen? Wo denke ich falsch? Ich habe schon einige Stunden mit diesem, meinem Problem verloren. Ich bin für jeden Rat dankbar. Pascal

Antwort 1 von Annett

Hi Pascal,

zuerst müßte ich mal wissen, wie Du die Liste (sicher Kombinationsfeld) in der Tabelle angelegt hast - welche Werte läßt Du abfragen? Eine Spalte aus einer Tabelle oder aus einer Abfrage? Erzähl mal.... dann sehen wir weiter. Die 50 Einträge bei BMW bedeuten, daß Du insgesamt schon soviele Einträge mit BMW gemacht hast.... er darf also nicht mitzählen, sondern... es könnte also auch ein Gruppierungsproblem sein. Aber mehr kann ich erst sagen, wenn Du mir die Einzelheiten mitgeteilt hast.

Liebe Grüße
Annett

Antwort 2 von Pascal

Hi Annett,

die Tabellen Fahrzeuge und Kunden sind mit zwei "undefinierten" Beziehungen auf die Felder Hersteller und Modell verknüpft.

In der Tabelle Kunden habe ich das Feld Hersteller (und danach auch das Feld Modell) auf folgendem Weg erstellt:
- Nachschlage-Assi. -> Werte der Tabelle Fahrzeuge
- Spalte "Hersteller" gewählt (AutoID wird automatisch eingbunden und ausgblendet
= SELECT [Fahrzeuge].[Hersteller] FROM Fahrzeuge ORDER BY [Fahrzeuge].[Hersteller];

Feld Modell:
= SELECT [Fahrzeuge].[Modell] FROM Fahrzeuge ORDER BY [Fahrzeuge].[Modell];

Beide Felder werden als Steuerelement Kombinationsfeld angzeigt.

Genau, bei der Auswahl soll dann jeder Hersteller nur einmal angezeigt werden, egal wie oft er tatsächlich vorhanden ist.
Im Feld Modell sollen auch nur die Einträge angezeigt werden, die zum Hersteller passen.

Antwort 3 von struppi

Hallo Pascal
Dein Problem ist die schlechte Strukturierung der DB.
Du mußt vom Allgemeinen ins Detail strukturieren.
Zunächst Tabelle Autohersteller:
Audi
VW
BMW
..
Dann Tabelle Marken
Golf
A6
A8
..
In tabelle Marken Hersteller Id einfügen und verknüfen
Dann Tabelle Teile (evtl auch strukturieren)
Rad
Lenker
..
Dann Tabelle n:n
Marken ID | Teile ID
--------------------------------------
Jetzt kannst Du von den einzelnen Tabellen Abfragen mit Kriterium auf Kombis machen und an Kombis in Deinem Formular hängen, mit der Auswahl zB des Herstellers im ersten Kombi die Marken einschränken. Bei Auswahl der Marke schränken sich über die n:n die Teile ein.

gruß struppi

Antwort 4 von Koebi

Grüezi Pascal

Du musst die Datensatzherkunft im Kombifeld der Modelle auf den gewählten Hersteller beschränken.
Mach dazu aus beiden Tabellen eine Abfrage nach den Modellen. Gleichzeitig muss die Abfrage auch die Hersteller abfragen (die Tabellen stehen ja zueinander in Beziehung). Gib in der Abfrage beim Hersteller folgendes Kriterium ein:
[Formulare]![Name des Kombifeldes Hersteller]![Hersteller]

So erhältst Du nur die Modelle des im Kombifeld Hersteller gewählten Herstellers.

Das andere Problem. Die 50 BMWs kannst Du bei der entsprechenden Datensatzherkunft auf 1 reduzieren, indem Du bei den Abfrageeigenschaften "Keine Duplikate" Ja eingibst.

Gruss
Köbi




Antwort 5 von Pascal

Hi Struppi,

danke für den Tip, vielleicht bekomme ich es so gebacken.
Werde es mal testen.

Falls noch jemand eine Andere Idee hat, einfach mal her damit. ;-)


Pascal

Antwort 6 von Pascal

Hallo zusammen,

ich glaubs einfach nicht, ich kriegs nicht hin! :-( *grrr*
In der Hoffnung das jemand so nett ist sich die Sache ganz kurz fuer mich anzuschauen und möglichst die Verknüpfungen / Beziehungen anzupassen, habe ich eine Mini-DB erstellt, die die Felder beinhaltet die mir den Schlaf rauben.

Die DB ist zu finden unter:
http://home.nexgo.de/allusers/db1.rar (14.437 kb)
oder
http://home.nexgo.de/allusers/db1.zip (22.392 kb)

Wäre nett wenn mir jemand unter die arme greifen könnte. Danke!


MfG
Pascal

Antwort 7 von Koebi

Grüezi Pascal

Ich kann Deine DB (zip) nicht öffnen. "Nicht erkennbares Datenbankformat" meldet mein PC.
Ich kann sie auch nicht konvertieren, reparieren oder komprimieren.

Ich habe Access97, liegt evtl. an der Version.

Gruss
Köbi

Antwort 8 von Pascal

Hallo Köbi,

habe Deinen Beitrag vorher falsch verstanden. Ich dachte das Archiv sei kaputt.
Habe die DB jetzt konvertiert.
http://home.nexgo.de/alluseres/db97.zip (8,439 kb)
http://home.nexgo.de/alluseres/db97.rar (6,972 kb)

Gruss
Pascal

Antwort 9 von Pascal

Hallo Köbi,

vielen herzlichen Dank fuer Deine freundliche Unterstüzung.
Mit Deinem bearbeiteten Bsp. müsste ich es schaffen. :-)
Jetzt muss ich nur noch die "scharfen" Daten verarbeiten.

DANKE!!!
Pascal

Antwort 10 von Pascal

PS: Die DBs koennen nicht mehr heruntergeladen werden.

Antwort 11 von Teddy7

Hallo Pascal !

Bin gerade online gegangen.
Falls Du mit Köbi ´s Beispiel (wider Erwarten ;-) ) nicht klar kommen solltest hier noch ein Tip:
Ich verwende in solchen Fällen als Datenquelle eine Abfrage auf das betreffende Tabellenfeld in der ich gruppiere. Das ergibt dann einen Select distinct .... und liefert jeden Wert aus der Tabelle nur einmal.
Beim 2. Feld würde ich genauso vorgehen, nur zusätzlich (wie schon gepostet wurde) die Abfrage beschränken auf den vorher ausgewählten Autotyp.

Gruß
Teddy