Vraagje over access!

Status
Niet open voor verdere reacties.

tafaro

Nieuwe gebruiker
Lid geworden
14 nov 2012
Berichten
2
Hallo,

wij zijn 3 VWO studenten die bij onze Informatica les vastlopen bij access.

we hebben een database gemaakt waarbij kamers van een hotel + klanten + begin datum + eind datum

alleen we willen zorgen dat een kamer op een periode niet 2 keer kan worden verhuurd, bij exact dezelfde begin en eind datum lukt het wel maar er tussen niet.

wie kan ons helpen
 
Moet toch lukken eigenlijk.

Met een SQL query kan je checken of de datum waarop je de reservering wilt aanmaken gelijk is of tussen de datums ligt met de where clausule.

Of een dlookup maken die hetzelfde doet eigenlijk

Where datum1 => [fldDatum1] AND datum2 =< [fldDatum2]

Je moet dus eerst checken of het kamernummer gelijk is aan het nummer wat je wilt reserveren, daarna checken op die datums.
Het is geen panklaar voorbeeld, maar een indicatie van hoe ik het zou benaderen.

Groeten,

Jeroen
 
De oplossing van Jeroen is een beetje kort door de bocht, want die lost het belangrijkste probleem niet op. En dat is, dat je geen record hebt voor de tussenliggende dagen. Als je een begindatum invult, en een einddatum, laten we zeggen: 1-12-2012 t/m 15-12-2-2012, dan kun je een query maken waarin je de begindatum ziet, en de einddatum en die kun je dan blokkeren. Maar voor de tussenliggende dagen heb je niks, en elke reservering die je zou willen maken op zeg 8-12-2012 zie je niet terug in je kalender. En dat is een hoop gepuzzel....
Een relatief simpele oplossing, is het gebruik van een tussentabel, waarin je voor elke dag een record genereert. Die tabel moet dan wel regelmatig worden uitgebreid met komende jaargangen om te kunnen blijven reserveren. Maar het voordeel daarvan is wel dat je een query kunt maken op basis van een Cartesisch product records genereert voor tussenliggende dagen. En als je 'fysieke' (voor zover een query fysieke resultaten oplevert) records hebt, kun je die simpel uitfilteren.
Omdat dit wel erg naar een schoolopdracht riekt, ga ik geen voorbeeldje posten, maar wel de code waarmee je zo'n tabel kunt vullen.
Code:
Dim iStart As Long, iEind As Long
    iStart = CLng(DateSerial(year(Date), 1, 1))
    iEind = CLng(DateSerial(year(Date) + 1, 1, 1))
    With CurrentDb.OpenRecordset("tDatum")
        Do While iStart < iEind
            .AddNew
            !Boekingsdag = CDate(iStart)
            .Update
            iStart = iStart + 1
        Loop
        .Close
    End With
En een query die gebruik maakt van deze tabel, ziet er dan zo uit:
Code:
SELECT KamerNummer, Boekingsdag
FROM Tdatarangeinvoer, tDatum
WHERE (Boekingsdag Between [begindatum] And [einddatum])
ORDER BY KamerNummer, Boekingsdag;
 
bedankt voor de reactie, we begrijpen het idee, maar de uitvoering gaat niet helemaal goed.
Bij een query weten we hoe we een code in moeten voeren, namelijk via de sql-mode. Alleen bij een tabel is dat niet mogelijk. Zou u ons daarbij ook kunnen helpen?
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan