Avatar billede leasing Nybegynder
01. februar 2002 - 15:04 Der er 9 kommentarer og
2 løsninger

Datoproblem i SQL-sætning

Hej
Jeg har følgende kode:
session.LCID = 1030
startdato = "13-02-2002"
slutdato = "11-11-2002"
response.write startdato & ", " & slutdato & "<br>"

SQLperiode = "SELECT * FROM PERIODE WHERE (((PERIODE.start)<=#" & slutdato & "#) AND ((PERIODE.slut)>=#" & startdato & "#));"
response.write sqlperiode & "<br>"
Set rs = Conn.Execute(SQLperiode)

I denne SQL-sætning får jeg de rigtige svar, men når jeg ændre startdatoen fra "13-02-2002" til "12-02-2002" så går der kage i resultatet.

Database: datoID, start, slut, periode
Er der en der kan hjælpe???
Avatar billede cthun Nybegynder
01. februar 2002 - 15:12 #1
Du skal gøre det omvendt!! fra 12-02-2002 til 13-02-2002
Avatar billede leasing Nybegynder
01. februar 2002 - 15:13 #2
Det er startdatoen der ændres fra 13-02-2002 til 12-02-2002 - når jeg kører forspørgslen i access fungere det som det skal.
Avatar billede leasing Nybegynder
01. februar 2002 - 15:19 #3
dd og mm skal ændres så formatet er mm/dd/yyyy. Hvordan ændre man det så det bliver til dansk format. Jeg har jo skrevet 'session.LCID = 1030' i min kode????
Avatar billede coltau Juniormester
01. februar 2002 - 15:39 #4
Session.LCID har ingen indflydelse på hvordan en sql-sætning behandles af Access. Access har (ligesom ASP's CDate) en ulogisk logik når den behandler datoer i tekstform.
I en SQL- sætning bliver "12-02-2001" ændret til "02-12-2001" mens 13-02-2001" forbliver som den er. Access (og CDate) forventer formatet: "MM-DD-YYYY". Når den så bytter om på "13-02-2001" og opdager at datoen ikke er i orden så acceptere den datoen uden at bytte om. LOGISK som Microsoft kan lave det.
Derfor skal du konsekvent anvende formatet: "MM-DD-YYYY" sammen med access.
Avatar billede sorenmhansen Nybegynder
01. februar 2002 - 22:29 #5
Jeg bruger altid dd-mmm-yyyy fx. 12-feb-2002. Det virker. Og så er der igen misforståelser lige meget hvor man er i verden.
Avatar billede coltau Juniormester
01. februar 2002 - 22:50 #6
Jeg ville ikke tvinge brugeren til at indtaste i det format.
Avatar billede sorenmhansen Nybegynder
02. februar 2002 - 14:48 #7
Jeg er udvikler på et global intranet og det er min erfaring et det ikke kun er indtastningen der er et problem. En amerikaner læser mm-dd-yyyy mens man i europa læser dd-mm-yyyy. Derfor har vi taget konsekvensen og bruger kun dd-mmm-yyyy. Vi har så lavet en løsning som, ja, tvinger bruger til at indtaste noget der med sikkerhed bliver fortolket rigtigt. Nogen vil mener det er mere besværligt, men det er rimeligt afgørende om det internationale ledermøde afholdes den 2. Marts eller den 3. Februar.
Avatar billede leasing Nybegynder
04. februar 2002 - 09:28 #8
sorenmhansen: Hvordan får jeg formatet lavet om til dd-mmm-yyyy???
Avatar billede sorenmhansen Nybegynder
04. februar 2002 - 13:12 #9
Function DateToString(datDate)
  If Not(IsNull(datDate) Or IsEmpty(datDate)) And IsDate(datDate) Then
    Dim monthname
    monthname = Array("jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec")
    DateToString = Day(datDate) & "-" & monthname(Month(datDate) - 1) & "-" & Year(datDate)
  End If
End Function
Avatar billede coltau Juniormester
04. februar 2002 - 20:07 #10
Jeg vil stadigvæk anbefale at man anvender en mere brugervenlig indtastning. I sorenmhansen's tilfælde er det i orden - men man skal gøre op med sig selv om brugeren kan leve med det.
Jeg har i 10 år lavet administrative løsninger (regnskabsprogrammer) og vi kunne godt lukke hvis vi tvang brugerene til at indtaste på denne måde.
Vi gør lige modsat - vi tillader indtastninger som disse:
1: Bliver automatisk til regnskabsårets første dag.
1002: Bliver til 10 feb iaktuelle regnskabsår.
10-1200: Bliver til 10-12-2000
osv ...
Avatar billede sorenmhansen Nybegynder
04. februar 2002 - 22:09 #11
Fint nok. Jeg tror det handler om hvilke antagelser man kan gøre. Problemet er, at jeg ikke kan antage hvad brugeren mener. Du har besluttet at bruge ddmmyyyy, det kan jeg desværre ikke. Man kender det jo fra sig selv; for os vil det være svært at huske at bruge mmddyyyy, det vil være lige så besværligt for en amerikaner at bruge ddmmyyyy. Der ud over har jeg ikke nogen måde at finde ud af hvordan datoformatet er sat op på brugerens computer.
Men ellers tror jeg vi er enige, hvis jeg kun havde danske brugere, ville jeg også bruge din løsning.
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