PDA

Vollständige Version anzeigen : Kombifeld + Endlosformular


tkdjoerg
05.07.2006, 21:18
Hallo!

Nachdem ich den halben Tag das Forum durchleuchtet habe und dennoch nicht fündig geworden bin, nun zu später Stunde mein Problem, dass sich am besten an der angehangen DB erläutern lässt!

In meiner DB gibt es Tabellen für Spediteure, Ausfuhrgebiete, Länder und Vorfälle.

Ein Spediteur kann in einem oder mehreren Ausfuhrgebieten und in verschiedenen Ländern tätig sein. Um diese n:m Beziehung abzubilden gibt es eine weitere Tabelle "tbl_spediteure_ausfuhrgebiete".

Wir nähern uns dem Problem...
Nun gibt es sogenannte Vorfälle, die sich auf eine dieser Kombinationen in der "tbl_spediteure_ausfuhrgebiete" beziehen.
Den Verweis auf einen dieser Vorfälle stelle ich über eine Beziehung zwischen der "tbl_spediteure_ausfuhrgebiete" und "tbl_vorfaelle" dar.

Für den Anwender habe ein Formluar "frm_vorfaelle". In diesem Endlosformular, wähle ich über ein ungebundenes Kombinationsfeld einen Spediteur.

Daraufhin kann man über ein zweites Kombifeld ein Ausfuhrgebiet / Land auswählen. Hier sollen allerdings nur die Gebiete angezeigt werden,
in denen der zuvor gewählte Spediteur auch aktiv ist.
Die Datensatzherkunft stelle ich per VBA über die Eigenschaft RowSource bereit. Wie ihr seht enthält diese Abfrage eine gebundene Spalte (spediteur_ausfuhrgebiet) die ich in "tbl_vorfaelle" speichern möchte.
Anhand dieser ID, ist dann erkennbar, um welches Gebiet, Land und welchen Spediteur - also um welche Kombination in "tbl_spediteure_ausfuhrgebiete" - es sich handelt (Siehe DB Entwurf)

Das Problem ist
1. Wähle ich einen Spediteur, werden alle anderen Kombinationsfelder mit diesem aktualisert.
2. Ähnlich verhält es sich mit der Wahl der Ausfuhrgebiete...

Meine Frage lautet nun...Ist es überhaupt möglich nur anhand einer ID (spediteur_ausfuhrgebiet) den Sachverhalt abzubilden?
Oder muss ich in "tbl_vorfaelle" noch 3 weitere Felder für den Spediteur, das Gebiet und das Land einbauen und dann über VBA sicherstellen, das nur die richtigen Gebiete / Länder für einen Spediteur gespeichert werden?

Für Eure Ratschläge danke im Voraus!

Gruß Jörg

Anne Berg
06.07.2006, 07:43
Das Problem ist... typisch für ungebundene Felder in Endlosformularen. ;)

Ich sehe noch nicht die Notwendigkeit der Tabelle Spediteur_Ausfuhrgebiet. Schränkst du dich da nicht unnötig ein? Oder andersrum: ist nicht der Spediteur das zu speichernde Merkmal und nur die Auswahl der möglichen Sp. wird durch das Ziel-/Ausfuhrgebiet beeinflusst?

Fazit: ich würde unbedingt den Spediteur speichern, nicht den Schlüssel aus der Kombi-Tabelle.

Paul.Ostermeier
06.07.2006, 07:48
Hallo Jörg,

Dein Problem rührt daher, dass Du die Darstellung "Endlosformular" für die Eingabe in Verbindung mit einem "ungebunden Steuerelement" gewählt hast, in dem Fall ist die Anzeige so wie Du sie beschreibst, da das jeweils ungebunde Steuerlement zur Laufzeit zunächst eben alle angezeigten DS betrifft - das verwirrt und ist "unschön" ....


Was spricht dagegen ein "Einzelnes Formular" zur Eingabe zu verwenden ...
dann kannst Du Deine ungebundenen Felder für den Anwender wesentlich
eleganter handhaben.

Für die Nachbearbeitung vorhandener Beanstandungen ? kannst DU ja eine Endlosformular-Darstellung wählen, dann wäre aber der Spediteur aber kein
ungebundenes Feld mehr - weil der da schon feststeht !?

MfG
Paul

tkdjoerg
06.07.2006, 09:51
@ Anne & Paul:

Irgendwie stehe ich hier auf dem Schlauch oder die Sonne knallt zu stark auf meinen Kopf...

Die Tabelle "Spediteur_Ausfuhrgebiet" stellt ja die n:m Beziehung dar, so dass ein Spediteur in mehreren Gebieten aktiv sein kann...und das Endlosformular ist von Endbenutzer gewünscht.

Könntet Ihr Eure Ausführungen noch etwas detailierter erläutern? Danke!

Anne Berg
06.07.2006, 09:59
Hallo,

ich würde zwar die Tabelle für die Datenherkunft des Kombifeldes hinzuziehen, aber am Ende die Spediteurnr. speichern, das Feld also an den Spediteur binden, nicht an diese "Hilfstabelle".

tkdjoerg
06.07.2006, 10:11
Wenn ich in der tbl_vorfaelle die spediteur id speichere, dann weiß ich zwar, welcher Spediteur in einen Vorfall "verwickelt" war, jedoch kann ich dann nicht mehr feststellen, in welchem Gebiet der Vorfall stattfand...deshalb die n:m-Tabelle

Anne Berg
06.07.2006, 10:26
Wenn du das wissen willst, würde ich beide Informationen speichern. Die Tabelle "Spediteur_Ausfuhrgebiet" macht nur Sinn, wenn du die Einsatzgebiete der Spediteure festlegen und bei der Auswahl (einschränkend) berücksichtigen willst. Für andere Zwecke würde ich sie nicht benutzen.

tkdjoerg
06.07.2006, 10:37
Hallo Anne...
Ich glaube jetzt haben wir uns verstanden ;)

Du meinst also ich sollte in die tbl_vorfaelle den spediteur und das ausfuhrgebiet speichern.

Damit der Benutzer nur korrekte Kombinationen eingibt, muss ich zuvor über eine entsprechende Abfrage sicherstellen, das der Benutzer nur Gebiete zur Auswahl hat, in denen der Spediteur auch aktiv ist?
Korrekt?

Anne Berg
06.07.2006, 10:59
Ja, so hatte ich das gemeint. Was hältst du davon?

tkdjoerg
06.07.2006, 11:05
Ist wahrscheinlich die beste Lösung...
Aber widerspricht es nicht einem guten DB Entwurf, Daten mehrfach zu speichern?...Obwohl Redundanzen treten ja bei dieser Variante nicht auf

Werde es jedenfalls so machen, wie Du es vorgeschlagen hast!

Mal wieder ein Dickes Dankeschön!

Jörg

Anne Berg
06.07.2006, 11:16
Redundanzen - ja, habe ich auch schon kurz dran gedacht, in gewisser Weise hast du da natürlich Recht, aber eine bessere Lösung fällt mir dazu im Moment nicht ein.

Eine Alternative wäre höchstens, wie bereits vorgeschlagen, auf das Endlosformular zu verzichten...