Avatar billede peturkirke Novice
23. januar 2005 - 18:47 Der er 16 kommentarer og
1 løsning

mærkelig asp/access fejl ?

kan nogen fortælle mig hvorfor denne sql-forespørgsel:

strSQL = "SELECT * FROM kalender WHERE Left(Dato,10) = #" & dtmDate & "# ORDER BY Dato;"

kun returnerer records når datoen er i januar 2005 og før, men ikke klarer at returnere datoer i februar 2005 ?

dtmDate er en datostring, f.eks. sådan: 02-04-2005

databasen er Access
Avatar billede softspot Forsker
23. januar 2005 - 19:27 #1
Kan du se et mønster i de datoer som ikke bliver returneret?

Jeg mener hvis du nu tager de rækker som ikke bliver returneret og kigger på dem med amerikansk datoformat (mm-dd-yyyy) er det så valide datoer?
Avatar billede peturkirke Novice
23. januar 2005 - 20:41 #2
eneste mønster jeg ser, er at det er datoer efter 31-01-2005 og det synes jeg er meget mærkeligt !

jeg har f.eks. 01-02-2005, 10-02-2005 og 11-02-2005 som ikke fungerer, mens 28-01-2005 og 31-01-2005 fungerer fint !
Avatar billede peturkirke Novice
23. januar 2005 - 20:42 #3
og datoer fra 2004 fungerer også meget fint
Avatar billede peturkirke Novice
23. januar 2005 - 20:49 #4
nu fandt jeg ud af at 28-02-2004 fungerer fint men 10-02-2004 fungerer heller ikke !
Avatar billede peturkirke Novice
23. januar 2005 - 20:57 #5
nu har jeg en mistanke om hvad det kan være, fordi 13-01-2005 virker mens 12-01-2005 virker ikke
Avatar billede softspot Forsker
23. januar 2005 - 21:27 #6
Hvad har du liggende i dtmDate? Kan du evt. vise lidt mere kode?
Avatar billede peturkirke Novice
23. januar 2005 - 21:55 #7
ikke mere end det her:

dtmDate = Request("date")
dtmDate = CDate(dtmDate)
Avatar billede softspot Forsker
23. januar 2005 - 22:04 #8
Hvad sker der hvis du sætter CDate omkring Left(Dato,10)

Som du kan fornemme skyder jeg lidt med spredhagl, men jeg regner med at du er med på den indtil vi finder en løsning eller der kommer et andet bedre bud...?
Avatar billede peturkirke Novice
23. januar 2005 - 22:06 #9
min mistanke var rigtig - jeg lavede en record til den 01-12-2005, og når jeg spørger på den, får jeg data for 12-01-2005, og det omvendte tilfælde gør sig også gældende.
men ......
forvirringen fortsætter ..
når jeg så laver en pr. 01-04-2005, så får jeg 0 record som svar, selv om jeg har 04-01-2005, og heller ikke omvendt ! ???

det er noget lort ! jeg brugte mysql databasen før, og da kørte programmet uden nogen som helst problemer !
Avatar billede softspot Forsker
23. januar 2005 - 22:13 #10
prøvede du at ændre din SQL-sætning som jeg foreslog (altså det der med CDate)?
Avatar billede peturkirke Novice
23. januar 2005 - 22:14 #11
når jeg bruger CDate omkring Left(Dato,10) får jeg en Data Type fejl
Avatar billede peturkirke Novice
23. januar 2005 - 22:17 #12
Data type mismatch in criteria expression
Avatar billede softspot Forsker
23. januar 2005 - 22:19 #13
OK, fair nok :(
Avatar billede peturkirke Novice
23. januar 2005 - 22:21 #14
jeg tror jeg laver sql-en om så jeg sammenligner dag, måned og år, dvs med day, month og year, det vil nok fungere - men jeg giver dig poengene, fordi du ledte mig på det rette spor - skriv bare et svar
Avatar billede softspot Forsker
23. januar 2005 - 22:25 #15
hvis jeg finder en løsning popper jeg lige et post mere...
Avatar billede peturkirke Novice
23. januar 2005 - 22:40 #16
fint tak
Avatar billede peturkirke Novice
26. januar 2005 - 10:57 #17
... omsider fandt jeg løsningen ! jeg har prøvet alt muligt, men det eneste som vil virke ordentligt er denne sql:

strSQL = "SELECT * FROM kalender WHERE Year(Dato) = " & Right(dtmDate,4) & " AND Month(Dato) = " & Mid(dtmDate,4,2) & " AND Day(Dato) = " & Left(dtmDate,2) & " ORDER BY Dato;"
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