01. marts 2017 - 15:35Der er
15 kommentarer og 1 løsning
Bookingsystem - Access database
Er kørt fast... Jeg skal undersøge om et lokale er ledigt på et givent tidspunkt...
Har FraTid og TilTid i formatet ( mm-dd-yyyy hh:mm:ss eller dd-mm-yyyy hh:mm:ss ). Disse tider skal holdes op mod records i access databasen, som har tidspunkterne som standard dato format...
Det er en skidt måde at lave SQL på (dvs. strengsammensætning), men det er en anden historie :)
Bort set fra det og uden at være helt afklaret med, hvad problemet egentlig er, så tænker jeg du har problemer med at få trukket de rigtige data ud... er det korrekt?
I så fald, vil jeg mene, at du skal formatere din dato i ét kendt format, som er anvendeligt uanset, hvilket sprog maskinen det kører på, er sat op til. Hvis du formaterer din dato således: yyyy-mm-dd hh:nn:ss er jeg ret overbevist om, at din SQL vil fungere...
bevist undgående at udtrykke tidspunkter som tekst (med andre ord - vha tegn med omsluttende # i sql tekststrengen) .
Har ikke testet særlig meget - det der kan drille hvis man laver det forkert er ombytning af måned og dag, ikke for alle poster men hvor det kan lade sig gøre.
Bemærk at where delen giver værdiet til en "not in" sql condition - altså bruges til at fratrække de værelser som er optaget i en given periode.
Softspot . Samme resultat virker ikke - om det er : SELECT * FROM qryBooking1 WHERE BookingAktivitet=1 AND Fra BETWEEN #3-6-2017 14:45:00# AND #3-6-2017 14:45:00# eller SELECT * FROM qryBooking1 WHERE BookingAktivitet=1 AND Fra BETWEEN #6-3-2017 14:45:00# AND #6-3-2017 14:45:00#
Ja, de har format af Dato og Klokkeslæt... Dato og klokkeslæt ligger i hver sin kolonne, og bliver sammenlagt i en query, og formateret til "yyyy-mm-dd hh:nn:ss"
Hmm... det lyder som om din query (taler du om et view?) returnerer strenge med Fra- og Til-datoen som en streng. Kan du evt. vise hvordan qryBooking er sammensat (altså SQL-sætningen for denne query)?
Hvis ovenstående antagelse er korrekt, tvivler jeg på at between fungerer med en dato som grundlag.
Er det muligt for dig, at gemme dato og tid i samme felt? Hvis det er, vil jeg mene du kan bruge den metode jeg har skitseret.
Alternativt prøv evt med flg.:
SELECT * FROM qryBooking1 WHERE BookingAktivitet=1 AND '2017-03-07 14:35:00' BETWEEN Fra AND Til
Atså med datoen som en streng og med foranstillede nuller for dato og måned mindre en 10, hvilket er vigtigt, hvis datoerne i qryBooking1 er strenge.
View er det ikke SQL server...? Min query SELECT tblBooking1.BookingID, tblBooking1.BookingAktivitet, Format([bookingdatofra] & " " & [fratid],"yyyy-mm-dd hh:nn:ss") AS Fra, Format([bookingdatotil] & " " & [tiltid],"yyyy-mm-dd hh:nn:ss") AS Til FROM tblBooking1;
Det er muligt at Access ikke benytter den terminologi, men i princippet er en query og et view det samme.
Bort set fra det, ser det ud til, at min antagelse er korrekt (at din query returnerer strenge i stedet for datoer). Derfor vil jeg opfordre dig til at prøve mit sidste forslag.
Alternativt kunne du måske prøve at konvertere de datoer din query returnerer til datetime-datatyper. Jeg vil tro du kan bruge DateValue til dette.
SELECT tblBooking1.BookingID, tblBooking1.BookingAktivitet, DateValue(Format([bookingdatofra] & " " & [fratid],"yyyy-mm-dd hh:nn:ss")) AS Fra, DateValue(Format([bookingdatotil] & " " & [tiltid],"yyyy-mm-dd hh:nn:ss")) AS Til FROM tblBooking1;
Men ellers prøv at google "Converting strings to dates i access", så vil jeg tro du finder noget brugbart...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.