Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Micharius am September 11, 2018, 20:58:09

Titel: Reihenfolge von Datensätzen, wie lösen?
Beitrag von: Micharius am September 11, 2018, 20:58:09
Hallo zusammen

Bin mit einem neuen Projekt gestartet (worden) und am Erstellen eines Datenmodells. Unter anderem gibt es eine Tabelle tblArtikel und eine Tabelle tblArbeitspositionen. Die Datensätze von tblArbeitspositionen sollen über eine Zuordnungstabelle den Artikeln zugeordnet werden können. Die Reihenfolge der zugeordneten Datensätzen soll jedoch nicht zufällig sein, sondern z.B. Projekt Kick-Off, Implementierung, Dokumentation, Abnahme, Projektabschluss. Erfasse ich alle Datensätze schön der Reihe nach, habe ich diese natürlich schön nacheinander. Doch wenn ich mal was einfügen muss, wird es schwieriger.

Kurz gefragt: Ist es eine gute Idee, jedem Datensatz eine zusätzliche Nummer zu vergeben, und jeweils nach dieser zu sortieren? Wenn diese 3- oder 4-stellig sind, könnte man noch "Luft" dazwischen lassen, falls mal was geändert wird. Oder macht man dies in der Praxis ganz anders?

Ich hoffe, den Sachverhalt einigermassen verständlich geschildert zu haben, und würde mich über Tipps freuen.

Beste Grüsse

Micharius
Titel: Re: Reihenfolge von Datensätzen, wie lösen?
Beitrag von: MzKlMu am September 11, 2018, 22:11:50
Hallo,
ZitatProjekt Kick-Off, Implementierung, Dokumentation, Abnahme, Projektabschluss.
dafür sollte es eine Tabelle geben mit einem estra Primärschlüssel. Den kannst Du als Zahl (z.B.in 100er Schritten) anlegen.
Für einen Eintrag dazwischen nimmts Du dann den entsprechenden Zwischenwert.
Die Reihenfolge der Erfassung spielt dann keine Rolle. Im Formular wird nach diesem (Sortier) Primärschlüssel sortiert. Dieser muss nicht zu sehen sein.
Titel: Re: Reihenfolge von Datensätzen, wie lösen?
Beitrag von: Lachtaube am September 12, 2018, 04:44:44
Eine Sortierung, egal ob numerisch oder alphanumerisch über ein oder mehrere Felder bildet keine Beziehung der Elemente untereinander ab, sondern ist als lose Vereinbarung zu interpretieren.

Vorteil: die flache Struktur lässt sich in Access gut abfragen. Unkompliziertes Einfügen von Elementen in die Struktur durch anpassung des oder der Sortierfelder.

Nachteil: es müssen immer alle Elemente im Speicher sortiert vorliegen, um auf Vorgänger, Nachfolger, Oberelement etc. Bezug nehmen zu können. Es existieren keine echten Beziehungen zwischen den Elementen. Sortierfelder müssen bei Strukturänderung gewartet werden.


Eine Struktur, wie sie zum Beispiel im DOM eines XML-Dokuments vorliegt, hat klare feste Beziehungen. Ein Element besitzt ein Oberelement (ist Null bei einem Wurzelelement) und kann auf gleicher Ebene genau einen Vorgänger und einen Nachfolger, wie bei einer doppelt verknüpften Liste (https://en.wikipedia.org/wiki/Doubly_linked_list), haben. (Lässt man das Oberelement weg, hat man nur eine doppelt verknüpfte Liste vorliegen, was vielleicht Deiner Anforderung näher kommt.)

Vorteil: Elemente sind durch echte Beziehungen verknüpft, von einem Element ausgehend sind Oberelement, sowie Nachbarelemente immer bekannt (bedarf keiner Abfrage), Elemente der gleichen und untergeordneten Ebene lassen sich leicht ermitteln ohne alle Elemente im Speicher halten zu müssen; Unterelemente, sowie erstes als auch letztes Element einer Ebene sind leicht einzupflegen; es können Teile der Objekthierarchie mit relativ wenig Aufwand komplett verschoben verden.

Nachteil: Höherer Verwaltungsaufwand; tiefer verschachtelte Elemente müssen prozedural durch rekursiven Aufruf ermittelt werden, weil die SQL-Implementation in Access zu antik dafür ist; zur Darstellung der Struktur wird man vermutlich ein Treeview-Steuerelement (ActiveX) verwenden (es sei denn, man beschränkt sich auf Elemente einer Ebene); das Einfügen und Löschen von Elementen in der Mitte einer Ebene gestaltet sich komplexer, weil auch Nachbarelemente bearbeitet werden müssen.

Andere Möglichkeiten Objekthierarchien abzubilden, läge in der Verwendung von Nested Sets (https://de.wikipedia.org/wiki/Nested_Sets), die überwiegend einfach abzufragen sind, aber relativ viel Aufwand beim Bearbeiten benötigen.
Titel: Re: Reihenfolge von Datensätzen, wie lösen?
Beitrag von: Micharius am September 12, 2018, 07:34:50
Vielen Dank für die Inputs - ich lese mich gerne mal in die Thematik ein!
Titel: Re: Reihenfolge von Datensätzen, wie lösen?
Beitrag von: PhilS am September 12, 2018, 08:52:23
Zitat von: Micharius am September 11, 2018, 20:58:09Erfasse ich alle Datensätze schön der Reihe nach, habe ich diese natürlich schön nacheinander.
Dies ist eine weit verbreitete Annahme. Dennoch es nur ein Mythos.
Du kannst dich niemals auf eine automatische Sortierung der Datensätze verlassen (https://codekabinett.com/rdumps.php?Lang=1&targetDoc=dfirst-dlast-sortierte-ergebnismenge), weder nach der Reihenfolge der Eingabe, noch nach dem Primärschlüssel.

Zitat von: Micharius am September 11, 2018, 20:58:09Ist es eine gute Idee, jedem Datensatz eine zusätzliche Nummer zu vergeben, und jeweils nach dieser zu sortieren?
Ja, genau so würde ich das auch machen. Ich verwende für solche reinen Sortier-Felder gern einen Fließkommadatentyp, dann kann man bei bedarf auch durch Verwendung von Nachkommastellen immer noch einen zusätzlichen Wert dazwischen quetschen.
Titel: Re: Reihenfolge von Datensätzen, wie lösen?
Beitrag von: Micharius am September 12, 2018, 13:19:48
Auch danke @PhilS, das ist ein guter Input mit dem Fliesskommadatentyp!

Mein Statement
ZitatErfasse ich alle Datensätze schön der Reihe nach, habe ich diese natürlich schön nacheinander.

habe ich so gemeint, dass ich ja jederzeit nach dem Primärschlüssel sortieren kann, und zumindest so eine nicht-nummerische und nicht-alphabetische Reihenfolge habe, die zumindest in der Theorie die Reihenfolge der Eingabe repräsentiert . Das dies aber auf lange Sicht nicht so funktionieren wird, leuchtet mir ein....

Titel: Re: Reihenfolge von Datensätzen, wie lösen?
Beitrag von: Beaker s.a. am September 12, 2018, 16:23:49
Hallo Micharius,
Hier findest du eine sehr gute Erklärung zu Sortierung von Tabellen
http://www.office-loesung.de/p/viewtopic.php?f=167&t=777439 (http://www.office-loesung.de/p/viewtopic.php?f=167&t=777439)
(der letzte Post im Thread ist der gemeinte)
gruss ekkehard
Titel: Re: Reihenfolge von Datensätzen, wie lösen?
Beitrag von: MzKlMu am September 12, 2018, 18:16:13
Hallo,
Lies noch mal meinen Beitrag in #1 (1.Antwort).
Ich würde auf keinen Fall die Sortierzahl in der Zuordnungstabelle speichern. Dann musst Du die Zahl dort bei jedem Datensatz angeben.
Da ich aber annheme, dass die Reihenfolge der Arbeitspositionen für jeden Artikel gleich ist, gehört die Sortierzahl als PS in die Tabelle tblArbeitspositionen und nicht in die Zuordnung. Damit lässt sich die Zuordnungstabelle problemlos sortieren, auch wenn bei den tblArbeitspositionen eine Position dazwischen geschoben wird.
Daher mal die Frage:
Ist die Reihenfolge der Arbeitspositionen für jeden Artikel gleich ?
Titel: Re: Reihenfolge von Datensätzen, wie lösen?
Beitrag von: Micharius am September 13, 2018, 07:55:07
Hallo Klaus
Ja, die Reihenfolge der Arbeitspositionen ist immer gleich. Von dem her werde ich das tatsächlich so lösen, dass ich den PS entsprechend in der Tabelle tblArbeitspositionen zur Sortierung verwende.
Herzlichen Dank
Micharius