Hallo liebes Forum,
ich brüte nun seit Tagen darüber, wie man folgendes Problem geschickt lösen kann, aber es schlüpft nichts, egal wie sehr ich brüte:
Wir haben mehrere Transportanbieter, die uns ihre Tarife für verschiedene Frachtarte in Form einer Preismatrix zur Verfügung stellen. Eine Preismatrix enthält Angaben zu Transportkosten nach Gewicht und Zone, jede Zone besteht aus verschiedenen Ländern und ist von Anbieter zu Anbieter verschieden.
Preismatrix XY
Anbieter: xxx, Frachtart: Luft
Gewicht Zone1 Zone2
1 KG -----1€--- 4€
2 KG -----2€--- 5€
3 KG -----3€--- 6€
Am einfachsten, dachte ich, wäre es, das Ganze so abzubilden:
Eine Haupttabelle enthält die Namen der Preismatrizen (PK) und Zusatzinfos (Frachtart z.B.). Der Name der Preismatrix dient als Verknüpfung zu den drei Untertabellen (FK):
Gewicht: Hier wird für jede Preismatrix festgehalten, welche Gewichtsklassen existieren.
Zonenpreis: Hier wird für jede Zone einer Preismatrix der Preis festgehalten
Zone: Hier werden alle Länder, die zu einer Zone einer Preismatrix gehören, festgehalten.
Ich scheitere nun daran, mittels einer Form 1) Preismatrizen anlegen zu können und 2) abfragen zu können, welcher Anbieter für eine Verbindung den besten Preis hat.
Also: ich habe 1) halbwegs geschafft, ABER auf die unpraktischste nur denkbare Weise: indem ich unterstellt habe, dass es maximal 10 Zonen pro Preismatrix gibt. Ich habe dann in der Datenbank für jede Zone und jede Preisübersicht eine einzelne Tabelle angelegt, so dass ich insgesamt auf 22 Tabellen gekommen bin (..).
DAS kann nicht der optimale Weg sein und ich wüsste auch nicht wie ich Punkt 2), die Abfrage, umsetzen sollte.
MEIN PROBLEM - um endlich auf den Punkt zu kommen: wenn ich die Datenbank wie oben abgebildet aufbaue und dann (mittels Designer) den DGVs ihre BindingSource zuweise (also: jede Zonen-DGV bekommt eine Verknüpfung auf die Tabelle "Zone", jede Preis-DGV eine Verknüpfung auf die Tabelle "Zonenpreis", Gewicht-DGV und Matrixauswahl-DGV kommen nur einmal vor) dann sind die einzelnen DGVs abhängig voneinander und nicht gefiltert, das heißt die DGV für Zone1 zeigt die Länder ALLER Zonen an, die in der jeweiligen Preismatrix existeren und wähle ich zum Beispiel in DGV-Zone1 den 3. Datensatz aus, so wird dieser auch in allen anderen DGV-Zone2 - 10 ausgewählt.
Mit einem DataView-Filter habe ich versucht, die einzelnen DGVs so zu Filtern, dass nur das drinnen steht, was da hineingehört. Für jede DGV habe ich einen DataView-Filter angelegt und das hat auch soweit geklappt.
Aber nun besteht eben keine Verbindung mehr von der Preismatrixauswahl zu den einzelnen DGVs.... Wechsle ich die Preismatrix, dann folgen die Zonen nicht mehr. Uff, ich hoffe jemand kann mich halbwegs verstehen. Es tut mir leid wenn ich es so umständlich erzähle.
Hat jemand eine Idee, wie man Punkt 1) und 2) geschickt umsetzen kann? Denkanstöße?
Ist der Datenbankaufbau schon grundlegend falsch?
Gibt es eine einfache Möglichkeit, die DGVs richtig zu Filtern?
Ich würde mich sehr freuen, wenn jemand eine gute Idee hätte und mir weiterhelfen könnte.
Vielen Dank schonmal an alle, die bis hierhin gelesen haben...
ich brüte nun seit Tagen darüber, wie man folgendes Problem geschickt lösen kann, aber es schlüpft nichts, egal wie sehr ich brüte:
Wir haben mehrere Transportanbieter, die uns ihre Tarife für verschiedene Frachtarte in Form einer Preismatrix zur Verfügung stellen. Eine Preismatrix enthält Angaben zu Transportkosten nach Gewicht und Zone, jede Zone besteht aus verschiedenen Ländern und ist von Anbieter zu Anbieter verschieden.
Preismatrix XY
Anbieter: xxx, Frachtart: Luft
Gewicht Zone1 Zone2
1 KG -----1€--- 4€
2 KG -----2€--- 5€
3 KG -----3€--- 6€
Am einfachsten, dachte ich, wäre es, das Ganze so abzubilden:
Eine Haupttabelle enthält die Namen der Preismatrizen (PK) und Zusatzinfos (Frachtart z.B.). Der Name der Preismatrix dient als Verknüpfung zu den drei Untertabellen (FK):
Gewicht: Hier wird für jede Preismatrix festgehalten, welche Gewichtsklassen existieren.
Zonenpreis: Hier wird für jede Zone einer Preismatrix der Preis festgehalten
Zone: Hier werden alle Länder, die zu einer Zone einer Preismatrix gehören, festgehalten.
Ich scheitere nun daran, mittels einer Form 1) Preismatrizen anlegen zu können und 2) abfragen zu können, welcher Anbieter für eine Verbindung den besten Preis hat.
Also: ich habe 1) halbwegs geschafft, ABER auf die unpraktischste nur denkbare Weise: indem ich unterstellt habe, dass es maximal 10 Zonen pro Preismatrix gibt. Ich habe dann in der Datenbank für jede Zone und jede Preisübersicht eine einzelne Tabelle angelegt, so dass ich insgesamt auf 22 Tabellen gekommen bin (..).
DAS kann nicht der optimale Weg sein und ich wüsste auch nicht wie ich Punkt 2), die Abfrage, umsetzen sollte.
MEIN PROBLEM - um endlich auf den Punkt zu kommen: wenn ich die Datenbank wie oben abgebildet aufbaue und dann (mittels Designer) den DGVs ihre BindingSource zuweise (also: jede Zonen-DGV bekommt eine Verknüpfung auf die Tabelle "Zone", jede Preis-DGV eine Verknüpfung auf die Tabelle "Zonenpreis", Gewicht-DGV und Matrixauswahl-DGV kommen nur einmal vor) dann sind die einzelnen DGVs abhängig voneinander und nicht gefiltert, das heißt die DGV für Zone1 zeigt die Länder ALLER Zonen an, die in der jeweiligen Preismatrix existeren und wähle ich zum Beispiel in DGV-Zone1 den 3. Datensatz aus, so wird dieser auch in allen anderen DGV-Zone2 - 10 ausgewählt.
Mit einem DataView-Filter habe ich versucht, die einzelnen DGVs so zu Filtern, dass nur das drinnen steht, was da hineingehört. Für jede DGV habe ich einen DataView-Filter angelegt und das hat auch soweit geklappt.
Aber nun besteht eben keine Verbindung mehr von der Preismatrixauswahl zu den einzelnen DGVs.... Wechsle ich die Preismatrix, dann folgen die Zonen nicht mehr. Uff, ich hoffe jemand kann mich halbwegs verstehen. Es tut mir leid wenn ich es so umständlich erzähle.
Hat jemand eine Idee, wie man Punkt 1) und 2) geschickt umsetzen kann? Denkanstöße?
Ist der Datenbankaufbau schon grundlegend falsch?
Gibt es eine einfache Möglichkeit, die DGVs richtig zu Filtern?
Ich würde mich sehr freuen, wenn jemand eine gute Idee hätte und mir weiterhelfen könnte.
Vielen Dank schonmal an alle, die bis hierhin gelesen haben...
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „bärbel“ ()