Verfügbarkeit von Zimmern checken
Hallo,
ich würde gern folgendes umstzen, ich habe eine Tabelle mit Buchungen (Name / Anreise mit Uhrzeit / Abreise mit Uhrzeit ...), dann eine Tabelle Zimmer (Zi1, Zi2 usw.). Weiterhin habe ich eine Zwischentabelle (ZimmerZT) um m:n Verknüpfungen zwischen Zimmer und Buchungen herstellen zu können. In der Zwischentabelle übernehme ich die Abreise als auch die Abreise und das Zimmer.
Im Verknüpfungsfeld von ZimmerZT -> Zimmer N:1 lasse ich mir per Einschränkung
-> not contains(a.'schon gewählte Zimmer', b.text(ZiNr)) die noch nicht gewählten Zimmer anzeigen, was auch wunderbar klappt.
Aber wie bekomme ich es hin dass er mir nur die Zimmer anzeigt, die tatsächlich frei sind und nicht durch eine andere Buchung im selben Zeitraum blockiert sind??
13 Antworten
-
Hallo, spontane Idee:
let Von := a.Buchungen.Anreise;
let Bis := a.Buchungen.Abreise;
b.ZimmerZT.Buchungen.Anreise >= Bis or b.ZimmerZT.Buchungen.Abreise <= Von
Wobei ich bei den Original-Tabellenbezeichnungen geblieben bin. Wenn 'schon gewählte Zimmer' der Name der Verknüpfung zu 'ZimmerZT' ist, dann müsste man den Namen entsprechend ersetzen. 'Anreise' und 'Abreise' sind hier Felder vom Typ "Datum + Uhrzeit".
-
Danke, ich probiers mal aus. 'schon gewählte Zimmer' ist ein Funktionsfeld concat(ZiNr) mit dem Ninox checkt welches Zimmer schon in der ZT ist.
-
Die Prüfung, welche Zimmer für diesen Gast schon augewählt wurden, sollte man sich eigentlich schenken können, wenn man auf die Datumswerte abfragt. Denn in dem Augenblick, wo diese Zimmer gebucht sind, stehen sie ja auch in der Tabelle ZimmerZT, dürften also schon deshalb nicht mit erscheinen.
-
Ja stimmt, auf den ersten Blick klappt es mit dem Code:
let Von := a.'Anreise:';
let Bis := a.Abreise;
b.ZimmerZT.'Anreise:' >= Bis or b.ZimmerZT.Abreise <= Von -
Irgendwie scheint noch ein Wurm drin zu sein.
-
Es gibt Termine da ist in der Tabell ZimmerZT definitiv nichts drin, er zeigt mir aber trotzdem nicht alle Zimmer an.
-
Warum heißt es in bei "b.ZimmerZT.Buchungen.Anreise >= Bis or b.ZimmerZT.Buchungen.Abreise <= Von" or und nicht and? Es muss doch beide Kriterien erfüllen?
-
Moin. Wenn ein Zimmer vom 05.04. bis zum 09.04. belegt ist, dann ist es für jedes zu prüfende ABreisedatum bis zum 05.04. verfügbar, unabhängig vom Anreisedatum. Ebenso verfügbar ist es für jedes ANreisedatum ab dem 09.04., egal, wie lange der Aufenthalt dauert. Es muss also eines der beiden Kriterien erfüllt sein. Beide gleichzeitig können ja gar nicht zutreffen.
Das war meine Überlegung. Es kann aber selbstverständlich sein, dass ich dabei irgendwas übersehen habe. Wenn du also sagst, dass die Formel in manchen Fällen nicht funktioniert, dann wäre ein konkretes Beispiel hilfreich, das auf die Spur des falschen Gedankens führt.
-
Ich hab mal kurz eine leere Datenbank genommen und alles neu aufgesetzt um Fehler in der laufenden DB auszuschließen. Dann habe ich Zimmer vergeben und folgendes festgestellt ,was ich mir nicht erklären kann, da die Daten sich nicht überschneiden.
-
Hier mal das Datenbankmodell
-
Da man seinen Beitrag nicht editieren kann hier nochmal zur Erklärung. Ich hab die Zimmer ausgewählt wie in Auflisten von Zimmer ersichtlich. Wenn ich dann ein neues Zimmer auswählen möchte habe ich die Zimmer in Anmerkung nicht in der Liste gefunden.
Bitte entschuldigt die vielen Screenshots
-
Die Einschränkung bei der Verknüpfung sieht folgendermaßen aus:
let Von := a.Anreise;
let Bis := a.Abreise;
b.ZimmerZT.Anreise >= Bis or b.ZimmerZT.Abreise <= Von -
Hat jemand eine Idee?
Content aside
- vor 3 JahrenZuletzt aktiv
- 13Antworten
- 757Ansichten