Avatar billede el_fredo Praktikant
04. juni 2003 - 15:54 Der er 16 kommentarer og
2 løsninger

Syntax error/OutOfBoundsException

Det skal lige nævnes, at jeg envidere benytter C# til udvikling.

Jeg har en database der udover nogle strings benytter sig af en enkelt Date/Time post. Formatet af denne er det samme som C#'s DateTime. Altså: DD:MM:YYYY HH:MM:SS. Jeg kan imidlertid ikke henvise til denne DateTime i en SQL søgning (fx "SELECT * FROM Tabel WHERE DateTime > xxxxxx"). Hvis jeg imidlertid laver en simpel søgning UDEN datetime (fx "SELECT * FROM Tabel") så går det fint, og jeg kan også vise indholdet af alle felterne UNDTAGET indholdet af mit DateTime. Hvis jeg prøver at henvise til dette felt, får jeg en OutOfBoundsException, og det er ikke fordi feltet er tomt. Jeg har checket i databasen. Hvad gør jeg forkert?
Jeg kan he
Avatar billede cesil Nybegynder
04. juni 2003 - 15:59 #1
datoformatet skal være yyyymmdd
Der skal '' eller ## rundt om datoen
(fx "SELECT * FROM Tabel WHERE DateTime > '20030506'").
Avatar billede el_fredo Praktikant
04. juni 2003 - 15:59 #2
Så der må ikke være noget mellemrum? Det er da der ellers i databasen...
Avatar billede el_fredo Praktikant
04. juni 2003 - 16:00 #3
Heller ingen "-" og ":"???
Avatar billede el_fredo Praktikant
04. juni 2003 - 16:01 #4
System.Data.OleDb.OleDbException: Data type mismatch in criteria expression.
Avatar billede el_fredo Praktikant
04. juni 2003 - 16:04 #5
Datoformatet i både C# og Access er hos mig DD-MM-YYYY HH:MM:SS og ikke YYYYMMDD.
Avatar billede el_fredo Praktikant
04. juni 2003 - 16:05 #6
Og jeg har prøvet med "'" udenom DateTime strengen.
Avatar billede cesil Nybegynder
04. juni 2003 - 16:24 #7
når du arbejder med sql skal formattet altid være YYYYMMDD.
Prøv lige det.
Avatar billede el_fredo Praktikant
04. juni 2003 - 17:11 #8
Det virker stadig ikke... nå, jeg kigger lige på det. Det er sikker bare en dummefejl jeg har lavet. Sådan er det altid :)
Avatar billede terry Ekspert
04. juni 2003 - 19:57 #9
"SELECT * FROM Tabel WHERE DateTime > #YYYY/MM/DD#"
How you get your date in this format in C# is up to you but it isnt enough with 20030506!
Avatar billede terry Ekspert
04. juni 2003 - 19:57 #10
.
Avatar billede el_fredo Praktikant
04. juni 2003 - 23:04 #11
Så går der jo megen data tabt. Jeg registrerer jo også timer, minutter og sekunder, og dem får jeg ikke sendt med på ovenstående facon... Jeg har nu ændret mine data, så jeg konverterer DateTime til en long vha. DateTime.ToDateFile() tror jeg nok den hedder, og gemmer den i databasen som en long. Når jeg henter den igen, skriver jeg så bare DateTime dt = DateTime(intdt.FromDateFile()) og så er det igen en alm. DateTime. Så bibeholder jeg også alle informationerne. Er der en smartere måde at gøre dette på? Udover selvfølgelig at gemme to separate værdier i databasen - en for dato og en for tid, men så kan jeg ikke sammenligne to værdier direkte med SQL - det kan jeg nu.
Avatar billede terry Ekspert
05. juni 2003 - 10:06 #12
Sorry dint think you wanted that too :o)

"SELECT * FROM Tabel WHERE DateTime > #YYYY/MM/DD HH:MM:SS#"
example:
"SELECT * FROM Tabel WHERE DateTime > #2003/06/05 10:06:10#"
Avatar billede el_fredo Praktikant
05. juni 2003 - 12:47 #13
Tak. Jeg kigger på det.
Avatar billede terry Ekspert
05. juni 2003 - 12:53 #14
selv tak :o)
Avatar billede terry Ekspert
05. juni 2003 - 12:55 #15
Dates in Access ARE stored as LONG already :o)
Avatar billede el_fredo Praktikant
13. juni 2003 - 17:33 #16
But how do I store the DateTime object, Terry? How do I construct my SQL statement so that Access will accept it?
Avatar billede el_fredo Praktikant
13. juni 2003 - 17:36 #17
Oh, it works. No probs. Thanks.
Avatar billede terry Ekspert
13. juni 2003 - 18:02 #18
selv thanks :o)
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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