Hallo,
ich suche eine Lösung für die folgenden 2 Probleme:
1) Ich habe eine Tabelle in der Veranstaltungen und die dazugehörigen Wochentage (z. B. montags, wöchentlich) und Zeitfenster (14-16 Uhr) eingepflegt sind. Eine Abfrage soll nun alle Veranstaltungen anzeigen die sich überschneiden ohne, dass ich für jeden Wochentag und jedes Zeitfenster eine extra Abfrage erstellen muss.
2) Wie lässt sich so eine Abfrage ggf. graphisch darstellen? Am liebsten wäre mir ein Wochenplan auf dem alle sich überschneidenen Veranstaltungen in das jeweilige Zeitfenster geschrieben sind (z. B. montags, 14-16 Veranstaltung Nr. 1,2...)
Schönen Gruß und vielen Dank für Eure Hilfe!
Christian
Hallo, grüß dich,
also ...
Terminüberschneidungen in einer einzelnen Tabelle zu finden und darzustellen ist nicht ganz einfach - aber das hast du wahrscheinlich selbst auch schon festgestellt.
Die 'Kunst' dabei ist es, einen Weg zu finden, über den nur die Datensätze angezeigt werden, die tatsächlich eine solche Überschneidung darstellen.
Nun, das Geheimnis dahinter ist folgendes:
Ich ging davon aus, dass du eine Tabelle mit dem Namen 'Veranstaltungen' dein Eigen nennst.
In dieser Tabelle sollen die Felder Veranstaltung (Zahl, Long Integer), Wochentag (Text), Start (Datum/Uhrzeit) und Ende (Datum/Uhrzeit) vorhanden sein und ein paar Daten beinhalten.
Aus diesen Einträgen wird ersichtlich, dass sich die Veranstaltungen 1 und 3 am Montag sowie 4 und 5 am Dienstag überschneiden.
Veranstaltung Wochentag start ende
----------------------------------------------------
1 Montag 14:00:00 15:00:00
2 Montag 15:30:00 16:00:00
3 Montag 14:30:00 15:00:00
4 Dienstag 14:30:00 16:00:00
5 Dienstag 15:00:00 15:30:00
6 Dienstag 14:00:00 14:30:00
7 Donnerstag 15:00:00 15:30:00
Du benötigst das Kreuzprodukt der Abfrage auf die Tabelle Veranstaltungen und auf deren Kopie
Für ein Kreuzprodukt dürfen die beiden Tbellen dann nicht per JOIN verbunden werden!
Folgende SQL ....
SELECT DISTINCT Veranstaltung.Veranstaltung, Veranstaltung_1.wochentag, Veranstaltung.Start, Veranstaltung.Ende
FROM Veranstaltung, Veranstaltung AS Veranstaltung_1
WHERE (((Veranstaltung.Veranstaltung)<>[veranstaltung_1].[veranstaltung]) AND
((Veranstaltung_1.wochentag)=[veranstaltung].[wochentag]) AND
((Veranstaltung.Start)<[veranstaltung_1].[ende]) AND
((Format(IIf([veranstaltung_1.start]<[veranstaltung].[ende],[veranstaltung].[ende]-[veranstaltung_1].[start],""),"hh:nn:ss"))<>""))
ORDER BY Veranstaltung_1.wochentag DESC;
.... folgendes Ergebnis:
Veranstaltung Wochentag Start Ende ÜberschneidetMit
1 Montag 14:00:00 15:00:00 3
3 Montag 14:30:00 15:00:00 1
4 Dienstag 14:30:00 16:00:00 5
5 Dienstag 15:00:00 15:30:00 4
Wodurch die oben erwähnten und sichtbaren Überschneidungen angezeigt / ausgegeben werden.
Das Feld 'ÜberschneidetMit' dient der Demonstration und ist in obiger SQL nicht enthalten, es würde bei mehr Überschneidungen pro Tag die Datensatzanzahl zu sehr erhöhen (Jede Überschneidung wird für jeden Datensatz 2 x angezeigt)
Die sich überschneidenden Veranstaltungen stehen nach Wochentagen sortiert untereinander.
Dieses Ergebnis bzw. die SQL KANN als Datenherkunft für eine Tabellenerstellungsabfrage verwendet werden.
Die Tabelle könnte dann als Grundlage für eine VBA-Routine herangezogen werden, mit Hilfe der ein Excel-Arbeitsblatt mit den gewünschten Informationen 'gefüttert' wird.
So kann etwa eine Art Wochenplan, wie ich ihn im Anhamg beispielsweise eingefügt habe mit deinen Überschneidungsdaten befüllt wirden.
Um einen graphischen Zusatzeffekt zu erlangen könnte dann noch jede Veranstaltung eine eigene Farbe als Zellhintergrund erhalten.
Leider kann ich dir dazu keine fertige Lösung anbiten .. aber Fragen kannst du gerne im Forum dazu stellen.
Ich habe dir dann nch meine Spieldatei hier hochgeladen damit du beim Testen dein Echtsytem nicht zerwurschteln musst :)
Ein Beispiel für einen Wochenplan ist ebenfalls vorhanden.
HTH
Peter
[Anhang gelöscht durch Administrator]
Hallo Peter,
ich bin beigeistert über Deine kompetente Rückmeldung.
Vielen Dank für die ausführliche Beschreibung und die Beispieldateien!!!
Ich werde die Abfrage gleich ausprobieren und melde mich wegen der graphischen Darstellung via Excel sicherlich noch einmal.
Herzlichen Dank und viele Grüße
Christian
Bin durch google gerade auf diesen Thread gestoßen.
Hatte genau das selbe Problem wie centaurus.
Wollte mich auch nur kurz bedanken und feedback geben.
Auch bei mir hat alles super funktioniert. Mußte mich zwar erst einige Zeit mit dem Code befassen - ging dann aber.
Vielen Dank nochmal. :)