Avatar billede bsn Forsker
01. marts 2017 - 15:35 Der 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...

De bedste hilsener
Bjarne
Avatar billede bsn Forsker
01. marts 2017 - 15:40 #1
Her min sql:
Sql="SELECT * FROM tblBooking WHERE BookingAktivitet=" & Request.Form("D1") & " AND Fra BETWEEN #" & FraTid & "# AND #" & TilTid & "#"
Avatar billede softspot Forsker
01. marts 2017 - 15:56 #2
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...
Avatar billede bvirk Guru
01. marts 2017 - 16:14 #3
Har afprøvet noget lignende her:

https://www.computerworld.dk/eksperten/spm/1015795 (kig på where delen i KroomSQL)

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.
Avatar billede bvirk Guru
01. marts 2017 - 16:16 #4
Men det var så office access - aner ikke om det kan lade sig gøre i asp
Avatar billede bsn Forsker
03. marts 2017 - 07:48 #5
Hvordan svarer man på kommentar til spørgsmål...???
Avatar billede Uvanga Ekspert
03. marts 2017 - 08:14 #6
Du skriver bare i feltet under det sidste indlaeg, og trykker pa Opret..
Avatar billede bsn Forsker
06. marts 2017 - 11:01 #7
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#
Avatar billede softspot Forsker
06. marts 2017 - 11:33 #8
Det var nu heller ikke det jeg skrev.

Jeg skrev du skulle benytte formatet yyyy-mm-dd hh:nn:ss, hvilket du ikke har gjort i nogen af dine eksempler. Prøv med:

SELECT * FROM qryBooking1 WHERE BookingAktivitet=1 AND Fra BETWEEN #2017-03-05 14:45:00# AND #2017-03-06 14:45:00#

for at finde rækker i intervallet d. 5. marts 2017 kl. 14:45 til d. 6. marts 2017 kl. 14:45.
Avatar billede bsn Forsker
06. marts 2017 - 13:06 #9
SELECT * FROM qryBooking1 WHERE BookingAktivitet=1 AND #2017-3-7 14:35:00# BETWEEN Fra AND Til

Virker ikke...:(

Felter fra db:
BookingID    BookingAktivitet    Fra    Til
1    1    2017-03-07 14:30:00    2017-03-08 15:00:00
Avatar billede softspot Forsker
06. marts 2017 - 13:19 #10
Er Fra og Til dato-felter i databasen (altså ikke strenge der ser ud som datoer)?
Avatar billede bsn Forsker
06. marts 2017 - 13:49 #11
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"
Avatar billede softspot Forsker
06. marts 2017 - 14:01 #12
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.
Avatar billede bsn Forsker
06. marts 2017 - 14:16 #13
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;
Avatar billede softspot Forsker
06. marts 2017 - 14:33 #14
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...
Avatar billede bsn Forsker
09. marts 2017 - 13:00 #15
Så funker det...

Dato formateres
FraTid=FormatDateTime(minDato & " " & Request.Form("T2") & ":00",0)

SQL = SELECT * FROM tblBooking WHERE BookingAktivitet=1 AND #03-09-2017 13:00:00# BETWEEN BookingDatoFra AND BookingDatoTil

Tak for hjælpen...
Avatar billede softspot Forsker
09. marts 2017 - 13:11 #16
Velbekomme :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester