2017-10-31 3 views
0

Ich habe Tabelle tbl_Booking mit ID, roomId, CheckIn, CheckOut und tbl_Rooms mit roomId, Room_TypeZimmer Verfügbarkeit von zwei Datums-/Zeitfelder MS Access

roomId in tbl_Booking ist ComboBox-, Rowsource ist tbl_Rooms, roomId

Meine Idee ist, wenn CheckIn und CheckOut Daten auswählen, RoomId-Kombinationsfeld, um nur verfügbare Räume in diesem Zeitraum anzuzeigen?

+0

ich denke, Sie meinen Sie die Liste filtern möchten Zeigen Sie uns die aktuelle Zeile für Ihr Business.? Kombinationsfeld und die Namen Ihrer Datumssteuerelemente –

+0

Sie müssen mehr Informationen als das bereitstellen, wenn Sie einige möchten Hilfe. Unter [Erstellen eines minimalen, vollständigen und überprüfbaren Beispiels] (https://stackoverflow.com/help/mcve) finden Sie weitere Informationen dazu, was Sie in einer Frage angeben sollten. –

Antwort

0

Ich denke, Sie müssen eine linke Join-Abfrage durch die RoomID für das Kombinationsfeld verknüpft erstellen. Fügen Sie für die Abfrage sowohl CheckIn als auch CheckOut als Kriterien hinzu. Für verfügbare Räume sollte ihr CheckIn- und CheckOut-Datum Null sein ODER CheckIn und CheckOut-Tag ist früher oder später als das eingegebene Datum.

0

Kollisionen zu vermeiden, ist die Logik hier ganz einfach:

Eine Kollision tritt auf, wenn:

RequestStartDate <= EndDate 
and 
RequestEndDate >= StartDate 

Die obige somit Abfrage ein ziemlich einfach ist, aber wenn eine Kollision auftritt, wird die oben Wille Datensätze zurückgeben. Auf der Grundlage des oben Genannten können Sie die Buchung nicht zulassen. Natürlich möchten Sie das logische REVERSE von oben (so können Sie nur die Bedingungen umkehren und nur verfügbare Räume.

So können Sie eine Abfrage in Code erstellen und dann diese Abfrage in das Kombinationsfeld im Code zuweisen :

dim strWhere      as string 
dim dtRequeestStartDate  as date 
dim dtRequestEndDate   as date 


dtRequestStartDate = inputbox("Enter start Date") 
dtRequestEndDate = inputbox("Enter end date") 


strWhere="#" & format(dtRequestStartDate,"mm/­dd/yyyy") & "# <= EndDate" & _ 
" and #" & format(dtRequestEndDate,"mm/dd­/yyyy") & "# >= StartDate" 


if dcount("*","tableBooking",strW­here) > 0 then 
    msgbox "sorry, you cant book 
...bla bla bla.... 

Wie bemerkt man eine sQL-Zeichenfolge mit oben genannten Kriterien und Sachen direkt in einem Kombinationsfeld bauen