19. oktober 2005 - 10:08Der er
21 kommentarer og 1 løsning
datoformatering i sql streng
Hej.
I min access database har jeg en masse poster, og hver af dem har en dato (eks. 19-okt-05).
Så har jeg to felter hvor jeg laver en dato fra, og en dato til. Så skal jeg have lavet en SQL streng, som henter alt fra databasen, hvor dato er mellem felterne $dato_fra og $dato_til.
Men det er ikke et datotype-felt? Det er normalt det man anbefaler, når det nu er en dato. Altså: Opbevar det i databasen med den rigtige type, og lav det så evt. om når det skal vises til brugeren, eller hentes fra brugeren.
Ved jeg godt, og jeg har heller intet med databasestrukturen at gøre.. Jeg skal bare have lavet den der mulighed, og aner ikke hvordan når strukturen er som den er?!?
Sådan som min SQL streng ser ud lige nu, så er det:
T_AuditVisit.AuditDate between #". $dato_fra_real ."# and #". $dato_til_real ."#
Det er så bare lige det snit af det. Der er noget foran og bagved ovenstående. Men hvad er der galt med den? Får flg fejl meddelse:
Warning: (null)(): Invoke() failed: Exception occurred. Source: Microsoft JET Database Engine Description: Syntax error in date in query expression 'T_AudititemDefects.Employee like '%%' AND T_AuditVisit.AuditDate between #22-okt-02# and #06-okt-05#'. in c:\program files\apache groups\apache\htdocs\lyngsoe\soeg.php on line 115
#$dato_fra_real#<=T_AuditVisit.AuditDate AND T_AuditVisit.AuditDate<=#dato_til_real#
Og får så den her fejl:
Warning: (null)(): Invoke() failed: Exception occurred. Source: Microsoft JET Database Engine Description: Syntax error in date in query expression 'T_AudititemDefects.Employee like '%prr%' AND #06-okt-02#<=T_AuditVisit.AuditDate AND T_AuditVisit.AuditDate<=#dato_til_real#'. in c:\program files\apache groups\apache\htdocs\lyngsoe\soeg.php on line 109
Formentlig - det er Access i en nøddeskal. Den blander præsentation af data med opbevaring, således at det bliver sværere at skrive korrekt, portabel kode. Men det er jo fint nok, hvis en programmør arbejder på timeløn ;)
Jeg har testet det en million gange, men jeg bliver ved med at få samme fejl??? :S:S
Warning: (null)(): Invoke() failed: Exception occurred. Source: Microsoft JET Database Engine Description: Syntax error in date in query expression '#15-okt-02#<=T_AuditVisit.AuditDate AND T_AuditVisit.AuditDate<=#dato_til_real#'. in c:\program files\apache groups\apache\htdocs\lyngsoe\soeg.php on line 109
Har rettet den dato_til_real, og får en syntax fejl:
Warning: (null)(): Invoke() failed: Exception occurred. Source: Microsoft JET Database Engine Description: Syntax error in date in query expression 'T_AudititemDefects.Employee like '%%' AND #03-okt-02#<=T_AuditVisit.AuditDate AND T_AuditVisit.AuditDate<=#29-okt-05#'. in c:\program files\apache groups\apache\htdocs\lyngsoe\soeg.php on line 109
Jeg er selv gået lidt videre, og har fået fjernet min syntaxfejl, men har tilgengæld fået en ny fejl :(
Den nye fejl er: Warning: (null)(): Invoke() failed: Exception occurred. Source: Microsoft JET Database Engine Description: No value given for one or more required parameters. in c:\program files\apache groups\apache\htdocs\lyngsoe\soeg.php on line 111
Og den nye SQL er:
... AND T_AuditVisit.AuditDate >= 04-okt-02 AND 15-okt-05 >= T_AuditVisit.AuditDate
sql: AND T_AuditVisit.AuditDate BETWEEN '03-okt-02' AND '15-okt-05'
Fejl: Warning: (null)(): Invoke() failed: Exception occurred. Source: Microsoft JET Database Engine Description: Data type mismatch in criteria expression. in c:\program files\apache groups\apache\htdocs\lyngsoe\soeg.php on line 111
Hvis jeg sætter # omkring får jeg samme syntax fejl som tidligere.....??
Warning: (null)(): Invoke() failed: Exception occurred. Source: Microsoft JET Database Engine Description: Syntax error in date in query expression 'T_AudititemDefects.Employee like '%%' AND T_AuditVisit.AuditDate BETWEEN #1007334000# AND #1130536800#'. in c:\program files\apache groups\apache\htdocs\lyngsoe\soeg.php on line 88
Har så fundet ud af, at datoen faktisk er et timestamp (access det lort skrev det som det andet. Men det gør vel ingen forskel når begge dele er rettet).
Jeg kan ikke se nogetsteds om du har testet det jeg nu har foreslået flere gange, senest i dag 14:52:22. Og godt nok kan man sige meget om Access, men jeg vil ikke acceptere det sprogbrug du lægger for dagen her, så jeg hopper ud af spørgsmålet.
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.