Problemen met datums en queries

Status
Niet open voor verdere reacties.

brutusje

Gebruiker
Lid geworden
14 jan 2007
Berichten
10
Hallo.
Ik heb een opdracht op school om een database te bouwen in access. Ik heb hem al bijna af maar loop toch tegen wat dingen aan. Zo ziet mijn database eruit. De tabellen met de velden ernaast.

Gasten > klantnummer; aanhef; voornaam; tussenvoegsel; achternaam; adres; postcode; woonplaats; geboortedatum; telefoonnr;
Appartementen > Appartementnummer; Grootte; Aantal slaapkamers; Extra`s; bouwjaar;
Boekingen > Boekingsnummer; Appartementnummer; Klantnummer;Aankomstdatum; Vertrekdatum;
Prijsgroep > Prijsgroep; prijs per dag;
Bezetting > Boekingsnummer; Gastnummer;

Dit zijn precies de tabellen zoals die in het ERD staan die ik voor de opdracht kreeg.
Er staat dus nergens iets bij van medereizigers. Deze moet ik toch realiseren en kunnen opgeven uit hetzelfde klantentabel en kunnen invoeren op het boekingsformulier. En moeten ze vermeld staan bij het afdrukken van
een boekingsbevestiging.
Ook moet ik bij het opgeven van appartementnummer, aankomstdatum en vertrekdatum kunnen
controleren of de appartement vrij is.

Kan iemand mij hieruit helpen ?
 
Laatst bewerkt:
Tis wat vaag beschreven door je maar msschien kan ik je redelijk op weg helpen. Proberen kan altijd

Over je medereizigers. Je kunt in je tabel gasten een extra kolom aan kunnen maken met "Aantal personen" Wil je elke medereiziger erbij toevoegen (bij degene op wiens naam de reserverin komt te staan) en je wilt hier ook alle gegevens bij dan maak je een extra tabel aan tblMedereizigers en geeft een medereiziger ID op dat uniek is nat als klantnummer en je maakt een vak aan klannr.

Nu kun je de mederezigers koppelen aan de hoofdpersoon.dus dan krijg je

id - klntnr - persoonsgegevens
1 - 1 - Piet
2 - 1 - Jan
3 - 1 - Karel
4 - 2 - Joost



Je zie nu elke medereiziger staat gedefineerd. je ziet dat het medereizigerId altijd uniek(geen dubbele waardes) en dat er bij klant nr 1, 3 medereizigers zijn. deze hoef je bijv niet te gebruiken bij facturen of e.d. dan heb je alleen de hoofdpersoon nodig
je kunt deze koppelen in sql dmv een join. Watvoor een ligt aan de situatie.

Verder
Je kunt in je sql query gaan kiezen.
Eerst selecteer je de appartementnummer

SELECT *
FROM Boekingen

Nu komt de WHERE clause dit moet je dan zelf even uitzoek dat kan ik niet uit mijn hoofd. dus ik verwoord een deel gewoon.

Je gaat met WHERE de volgende zoecriteria opgeven (.
zoek de vergelijking van appartementnummer met die op je formulier. nu heb je al alleen de reserveringen van dat appatement geselecteerd.
WHERE Appartementnummer = forms!frmBoeking!txtBoekingsnummer

Verder ga je nu kijken naar de aankomst datum en de einddatum in je formulier. Dus je 2e zoekcriteria luid
- ik wil alle regels zien waarbij de aankomst datum tussen de aankomst en vertrek datum ligt die je net ingevult hebt in je formulier

En als je dan je query iets meer uit breid kun je de hele query laten controleren of die datum vrij is. je kunt dan bv opgeven. dan is dit appartement leeg maar je kunt danniet 5 dagen blijven want 3 dagen na jullie aankomst datum komen er andere mensen.

Een andere optie (welke denk ik beter werkt) is het aanmaken van een jaren kalender. mensen reserveren bepaalde dagen en klik je de dagen opje formulier aan en dan worden die dagen gekoppeld aan de kalender. Dit heb ik in de praktijfk NOG niet gebruikt maar weet ik er meer van laat ik heb wel weten

Om straks de totaal prijzen strax te kunnen bereken dan gebruik je de datediff clause in SQL hiermee bereken je het verschil in dagen. dit getal kun je strax weer vermenigvuldigen met de prijsper dag.
 
wow, dat klinkt heftig.

:o Een sql statement kun je toch gebruiken bij een query ?
Je hebt `t nu toch ook niet over een opbouwfunctie ?
 
Hallo brutusje,

een gast is een medereiziger.
In je boekingsformulier voer je alle gasten in.
Gast selekteer je dan uit een keuzelijst die je in je formulier zet.
De keuzelijst baseer je op je tabel tblGast.

Groet,

Tardis
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan