Frage zum Zeitplan / Doppelbelegung
Karl Donaubauer
Gesendet: 12.12.13 13:31
Betreff: RE: Frage zum Zeitplan / Doppelbelegung



Elite Veteran

Beiträge: 848
50010010010025
Ort: Wien
Hallo, Christian!

Hagen - 11.12.13
...
PARAMETERS Haus Long, Start DateTime, [End] DateTime;
SELECT tblReservierung.RmBez
FROM tblReservierung
WHERE ((([Start])>=[RSStart] And ([Start])<=[RSEnde])) OR ((([End])>=[RSStart] And ([End])<=[RSEnde])) OR (((tblReservierung.RmBez)=[RmBez]) AND (([Start])<=[RSStart]) AND (([End])>=[RSStart]));

Die von mir gepostete WHERE-Logik wäre einfacher. Klappt es damit nicht?

WHERE RSStart<[End] AND RSEnde>[Start]

Je nach deiner Geschäftslogik, also ob das Haus am Abreisetag gleich wieder vermietet werden kann etc. musst du evtl. < und > durch <= und >= ersetzen. Aber ansonsten sollte das reichen.

Da ich aber in meiner DB den Zimmern Namen gegeben habe, meckert das Feld "Haus" bei der Eingabe das der Wert nicht zulässig ist. Ich denke also hier liegt schon mal das erste Problem, dass ich in ein numerisches Feld einen Text eingebe.

Klar. Du hast den Parameter Haus auch explizit als Long deklariert, also wird nur ein Long akzeptiert, kein Text. Es ist nicht ganz klar, warum der Parameter überhaupt drin ist, wenn er nicht im WHERE verwendet wird. Zudem wird in deiner echten DB dann eh ein Textfeld in der Tabelle stehen oder "intern" doch eine nummerische HausId? Das weißt nur du.

Das nächste Problem wo es bei mir hängt ist wie und wo ich diese Abfrage hinterlegen muss...

Wie geschrieben: Diese Abfrage wird normalerweise in einem Formular aufgerufen, wenn die nötigen An- und Abreisedaten vorhanden sind. In der Abfrage stehen dann keine abstrakten Parameter sondern Bezüge auf diese An- und Abreisedaten aus dem Formular, also:

[Start] wird zu Forms!DeinFormular!FeldNameDesAnreiseDatums
[End] wird zu Forms!DeinFormular!FeldNameDesAbreiseDatums

Es gibt ja auch sicherlich im Umkehrschluss dazu auch eine möglichkeit mit einer weiteren Abfrage aus einem Formular sich freie Häuser für einen bestimmten Zeitraum in einem Listenfeld anzeigen zu lassen, oder?

Dafür habe ich dir bereits einen FAQ-Link geschickt, aber zuerst solltest du die obige Belegt-Abfrage mit deinen echten Daten zum Laufen kriegen. Falls nicht, dann melde dich nochmal mit deinen echten SQL-Statements etc.

-----
Servus
Karl
*********
https://www.donkarl.com/devcon Access-Online-Konferenz 18.+19.4.
Access Forever: https://www.accessforever.org
Access News: https://www.youtube.com/playlist?list=PLVCeBbJIMDvdJ8ghMbEakJ6_EQyvy...
Access-Entwickler-Konferenz: https://www.donkarl.com/?aek
Top of the page Bottom of the page