Sitzplätze mit Access verwalten

31/07/2010 - 11:54 von Andreas P. | Report spam
Guten Morgen,

ich würde gerne Sitzplàtze für eine Veranstaltung in Access 2007
verwalten und bin dankbar für Anregungen was die Umsetzung in Access
angeht:

Man stelle sich eine Veranstaltung mit x Zelten vor. In einem Zelt
können n Personen sitzen, wobei n für jedes Zelt unterschiedlich sein
kann. Die Plàtze im Zelt sind einfach fortlaufend durchnummeriert und
es gibt eine feste Anzahl Sitzplàtze pro Reihe, so dass sich
automatisch ein zweidimensionaler Sitz-Plan ergibt - es müssen also
nur die Sitzplatznummern und keine Koordinaten in der Datenbank
verwaltet werden.

Wichtig ist, dass die Platznummern von mir gezielt vergeben werden
können! Wenn ein Zelt z.B. 50 Plàtze hat und noch alle Sitzplàtze frei
sind, möchte ich Herrn Meier auf Platz 4 setzen können(erste Reihe)
und Herrn Müller auf Platz 50(eher ganz hinten im Zelt). Ich möchte
also die Personen gezielt auf bestimmte Plàtze setzen können, ganz
egal ob da nun Lücken dazwischen sind oder nicht. Die Anzahl der
Sitzplàtze pro Zelt sollte nachtràglich in gewissen Grenzen
verànderbar sein - es könnte sein dass ein Zelt mit 50 Plàtzen so
beliebt ist, dass eher 100 Plàtze benötigt werden. Wenn jetzt schon 50
Plàtze vergeben wurden wàre es aus praktischen Gründen sinnvoll,
spàter einfach ein Zelt mit 100 Plàtzen aufzubauen(Reihenbreite
bleibt, es wird nur die Anzahl der Reihen erhöht) und in der Datenbank
bei dem Zelt mit 50 Plàtzen einfach die Anzahl der Plàtze auf 100 zu
korrigieren. Dadurch würden die bereits eingetragenen Gàste ihren
Sitzplatz behalten. Die Anzahl der Sitzplàtze nach unten zu
korrigieren(z.B. 40 Plàtze, obwohl bereits 50 belegt sind), geht
natürlich nicht so einfach!
Zu guter Letzt muss noch sichergestellt sein, dass eine Person nur
einen Platz bei der Veranstaltung belegt!

Folgende Gedanken habe ich mir schon gemacht:

3 Tabellen:
tblPerson(PersonID, PersonName)
tblPlatz(PlatzID, PersonID_f, ZeltID_f, PlatzNummer)
tblZelt(ZeltID, ZeltName, ZeltMaxPlaetze)

Beziehungen:
Zwischen tblPerson und tblPlatz 1:1, da pro Person genau 1 Platz
Zwischen tblZelt und tblPlatz 1:n, da pro Zelt n Plàtze

Ich hatte an eine Art Listenfeld mit sàmtlichen durchnummerierten
Plàtzen für das aktuell ausgewàhlte Zelt gedacht. In dieser Liste soll
quasi jede Zeile mit einer fortlaufend durchnummerierten
Sitzplatznummer beginnen und daneben ein Feld sein, welches entweder
leer ist oder die Person anzeigt, welche bereits auf dieser
Platznummer eingetragen wurde. Durch markieren einer Zeile soll eine
in einem anderen Bereich auswàhlbare Person auf diesem Platz
eingetragen werden können(sofern Platz nicht belegt). Im Bericht
sollen sàmtliche Plàtze(auch leere!) ausgedruckt werden, quasi genau
so wie es in der Liste am Bildschirm zu sehen ist.

Meine Frage ist jetzt, wie ich mein Vorhaben mit der gezielten
Sitzplatzvergabe in Access am einfachsten umsetze bzw. wie ich das
Problem mit den Lücken in der Liste löse? Erzeugt man die leeren
Sitzplàtze mitsamt Nummerierung auf Formular-VBA-Ebene und speichert
in der Tabelle "tblPlatz" nur die real existierenden
Platzreservierungen mit der Platznummer im Feld "PlatzNummer"?

Oder legt man besser in der Tabelle "tblPlatz" für jede ZeltID von
Anfang an eine bestimmte Anzahl(=Sitzplàtze) von Dummy-Datensàtzen an,
welche man durch Verknüpfung der Tabellen dann sowohl über das Feld
"PersonID" als auch über das Feld "PlatzNummer" im Formular gezielt
prüfen und aktualisieren kann?

Die Variante mit den Dummy-Datensàtzen gefàllt mir ehrlich gesagt
besser, aber eventuell habe ich ja etwas nicht bedacht oder es gibt
noch eine ganz andere Möglichkeit...

Mit freundlichen Grüßen,
Andreas P.
 

Lesen sie die antworten

#1 Stefan Kunze
02/08/2010 - 08:21 | Warnen spam
Hallo Andreas,


"Andreas P." schrieb...
Guten Morgen,

[...]

Meine Frage ist jetzt, wie ich mein Vorhaben mit der gezielten
Sitzplatzvergabe in Access am einfachsten umsetze bzw. wie ich das
Problem mit den Lücken in der Liste löse? Erzeugt man die leeren
Sitzplàtze mitsamt Nummerierung auf Formular-VBA-Ebene und speichert
in der Tabelle "tblPlatz" nur die real existierenden
Platzreservierungen mit der Platznummer im Feld "PlatzNummer"?

Oder legt man besser in der Tabelle "tblPlatz" für jede ZeltID von
Anfang an eine bestimmte Anzahl(=Sitzplàtze) von Dummy-Datensàtzen an,
welche man durch Verknüpfung der Tabellen dann sowohl über das Feld
"PersonID" als auch über das Feld "PlatzNummer" im Formular gezielt
prüfen und aktualisieren kann?

Die Variante mit den Dummy-Datensàtzen gefàllt mir ehrlich gesagt
besser, aber eventuell habe ich ja etwas nicht bedacht oder es gibt
noch eine ganz andere Möglichkeit...




Du kannst auch die Sitzplàtze in einer Tabelle "tblSitze"

SitzID | SitzBez
| -
1 | Reihe 1, Platz 1

oder so àhnlich anlegen. Die Tabelle enthàlt ALLE möglichen
Sitzplatznummern (min. bis zur Max. Anzahl deines größten Zeltes).
Über ein CROSS JOIN der Tabellen
tblZelte und tblSitze kannst du eine Abfrage erstellen, die dir alle
Sitze zu einem Zelt anzeigt.

SELECT Z.ZeltID, S.SitzID, Z.ZeltName, S.SitzBez
FROM tblZelte AS Z, tblSitze AS S
WHERE S.SitzID <= Z.ZeltMaxPlaetze

Die vergebenen Sitze speicherst du in einer Tabelle tblGebucht

PersonID | ZeltID | SitzID
1 | 1 | 1

Jetzt kannst du leicht abfragen welche Plàtze belegt oder frei sind
und welche Personen bereits gebucht haben.
Mit der Sitzbezeichnung wird die Lesbarkeit verbessert.

Viele Grüße
Stefan

Ähnliche fragen