Avatar billede kennedk Nybegynder
30. august 2007 - 08:17 Der er 3 kommentarer

access, sql. mellem to datoer

Hej eksperter

jeg sidder og laver min egen kalender i asp, og det lykkedes ret godt.
Den udskriver datoer 6 måneder frem, men så skal man så kunne tilføje "arrangementer" til kalenderen, så den bliver farvet rød.
Og arrangementerne er sat til en start og slut dato i databasen.
Jeg kan sagtens få den til at farve de felter hvor arrengementet starter og slutter. alle dagene i kalenderen bliver kort i en while så det hele sker automatisk. koden ser således ud:

                            set rsHighLight = ObjConn.Execute("SELECT fldId FROM tblKalender WHERE fldStart = #"&intDato&"-"&intPlusMaaned&"-"&intPlusAar&"# OR fldSLut = #"&intDato&"-"&intPlusMaaned&"-"&intPlusAar&"#")
                                %>
                                <td height="25" valign="top" <%if NOT rsHighLight.eof then response.write "style=""background-color: red;"""%>>

intDato = er datoen på selve dagen
intPlusMaaned = måneden kalenderen er nået til
intPlusAar = året kalenderen er nået til

Det er til et skoleprojekt, så det er ret vigtigt at jeg finder en løsning, og håber at i kan hjælpe

på forhånd tak
Avatar billede nielle Nybegynder
30. august 2007 - 08:28 #1
Access har et rigtigt datofelt - og det kan helt klart anbefales at man bruger dette i stedet for at dele datoer op i tre felter: dagsnummer, månedsnummer og år.

Hvis du gør dette ville du f.eks. simpelt kunne lave søgninger som giver alle datoer mellem to datoer:

SELECT dato FOM kalenderTabel WHERE startDato <= dato AND dato <= slutDato

eller:

SELECT dato FOM kalenderTabel WHERE dato BETWEEN startDato AND slutDato

De gange hvor man har brug for f.eks år-delen af en dato, kan man så bruge en af de detil rettede funktioner:

SELECT year(dato) AS aar FOM kalenderTabel
Avatar billede fennec Nybegynder
30. august 2007 - 10:03 #2
Nielle >>
Det er også den datatype kennedk bruger...

kennedk >>
Du skal være opmærksom på at Access bruger mm-dd-yyyy formatet. Den kan dog godt forstå datoer hvor dagen er 13 eller over:
12-02-2007 = 2 dec i access
13-02-2007 = 13 feb i access (her kan den selv forstå at bytte om på måned og dag)
02-13-2007 = 13 feb i access

Din kode skal altså være:
AccessDate = intPlusMaaned &"-"& intDato &"-"&intPlusAar
set rsHighLight = ObjConn.Execute("SELECT fldId FROM tblKalender WHERE fldStart<= #"& AccessDate &"# and fldSLut >= #"& AccessDate &"#")
Avatar billede fennec Nybegynder
30. august 2007 - 10:04 #3
mm-dd-yyyy formatet er KUN gældende når du kommunikere TIL access via SQL sætninger.
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