Avatar billede nitz Nybegynder
03. august 2009 - 08:13 Der er 10 kommentarer og
1 løsning

Vis alt mellem to datoer

Hej,

Jeg har stirret mig blind på et problem.

Jeg har en database hvori der er en startdato og en slutdato. Hvis vi siger at startdato er 03-08-09 og slutdato er 05-08-09, så vil jeg gerne have at der ved en gennemkørsel vises:

03-08-09
04-08-09
05-08-09

Jeg har prøvet med diverse gemmemløb, men bliver ved med at få fejl.

Er der nogen der kan ordne mit syn på det her? :oP
Avatar billede softspot Forsker
03. august 2009 - 09:38 #1
I Access og SQL Server kan du benytter BETWEEN for at finde alt mellem to punkter i et interval, herunder naturligvis datoer :-)

Eksempel (Access):

SELECT *
FROM tabel
WHERE now BETWEEN startdato AND slutdato

Eksempel (MS SQL Server):

SELECT *
FROM tabel
WHERE getdate() BETWEEN startdato AND slutdato

egge ovenstående eksempeler tager udgangspunkt i at dags dato ligger mellem start- og slutdatoerne.
Avatar billede nitz Nybegynder
03. august 2009 - 09:51 #2
Hej Softspot,

Mange tak, men så langt er jeg med :o)

Problemet er at jeg vil vise de dage der ligger imellem også. Så hvis jeg lister den uge for eksempel, så vil jeg ikke kun vise hændelsens startdato, men også de mellemliggende dage.

Eksempel:
i dag:    Fødselsdagsfest (startdato)
i morgen: Fødselsdagsfest
Onsdag:  Fødselsdagsfest (slutdato)
Avatar billede softspot Forsker
03. august 2009 - 09:57 #3
Det vil du også få med BETWEEN... så kan du vise den kode hvormed du forsøger at opnå dette resultat?
Avatar billede nitz Nybegynder
03. august 2009 - 10:19 #4
Jeg har desværre ikke adgang til koden lige nu, men den ser ca. sådan ud:

SELECT * FROM fester WHERE now BETWEEN startdato AND slutdato

while not eof

=fest

movenext
wend

Ovenstående gør at festen kun bliver udskrevet en gang. Så enten skal jeg loope igennem de næste 7 dage hvor så select ligger inde i loopet, eller også skal jeg gøre det på en anden måde.
Avatar billede softspot Forsker
03. august 2009 - 10:42 #5
OK, det lyder som om du forsøger at opnå mere end blot at hente data fra én tabel for at udskrive disse i din løkke.

Hvis dette er tilfældet, er du nød til at være meget mere konkret ifht. hvad du vil og hvad har af data (hvilke tabeller og hvilke kolonner har du bruge for), samt hvilke kolonner der evt. binder tabellerne sammen.

Jeg er har forståelse for at du ikke nødvendigvis lige kan svare på det her og nu, men så venter du bare til du kan... :-)
Avatar billede nitz Nybegynder
03. august 2009 - 11:17 #6
Nix, kun en tabel :o)

tabel:
fest_id
titel (fødselsdagsfest)
startdato
slutdato

Jeg kunne selvfølgelig lave det således:

tabel:
fest_id
titel (fødselsdagsfest)
dato

- og så oprette et nyt for hver dato festen strejker over. Men nu har jeg valgt startdato og slutdato.

Kan du følge mig, eller er jeg helt sort? :oP
Avatar billede softspot Forsker
03. august 2009 - 13:56 #7
Nååh, det er jo en lidt anden problemstilling :)

Jeg ville umiddelbart lave en datoiterator, som checkede om slutdatoen var overskredet og så skrive hver dato ud for hver iteration (pr. fest). Altså noget i stil med dette:

'... hent data og læg dem i rs
do while not rs.eof

  ' ... gør hvad der ellers skal gøres med data

  sd = rs("startdato")
  cd = sd
  while cd <= rs("slutdato")
    response.write cd & "<br>"
    ' peg på næste dato
    cd = dateadd("d", 1, cd)
  loop

  ' ... gør hvad der ellers skal gøres med data

  rs.movenext
loop
rs.close
Avatar billede nitz Nybegynder
09. august 2009 - 21:23 #8
Hej igen,

Undskyld at det tog lidt tid, men jeg har fået kigget ordentligt på det nu og tusind tak for hjælpen!

Hvis du smider et svar, så får du point!
Avatar billede softspot Forsker
09. august 2009 - 22:20 #9
Velbekomme :-)

NB: Der sneg sig lige en lille kodefejl ind i mit sidste eksempel, der slaæ maturligvis også en do foran while i den inderste while-løkke :-)
Avatar billede nitz Nybegynder
09. august 2009 - 22:28 #10
Hehe, det er helt i orden. Dine point er fuldt ud fortjent alligevel ;o)

Tak for det!
Avatar billede softspot Forsker
10. august 2009 - 09:42 #11
Tak for point :-)
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
Kategori
Kurser inden for grundlæggende programmering

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