Toon posts:

ASP met ACCESS-DB -> Changes dd/MM/yyy naar MM/dd/yyyy

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi,

Ik moet voor iemand een kleine "ASP"-website maken, maar ik zit vast op een probleem dat ik niet direct kan oplossen. Misschien geraak ik met jullie hulp iets verder. De "ASP"-website bezit een "MS Access"-database.

In het kort uitgelegd :
1. De gebruiker kiest een datum die als "dd/MM/yyyy" wordt weergegeven, bijv. : 01/05/2009
2. De gebruiker slaat de datum op, maar komt als 05/01/2009 in de database
3. Als de gebruiker de datum "13/05/2009" kiest, komt die correct in de database

Conlusie => wanneer het cijfer voor de eerste "/" <= 12 is worden de "dd" & "MM" geswitched, indien het >= 12 is, wordt het correct opgeslaan in de Database.

Mijn ASP - code - snippet voor het versturen van de SQL (dit lukt zonder problemen):
ASP.NET Visual Basic:
1
2
3
4
5
6
7
8
9
10
Set objConn = Server.CreateObject("ADODB.Connection")   
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
       "Server.MapPath ("db/Gegevens.mdb") & ";"                
objConn.Open(strConn)   

mySQL = "insert into Reservaties([UserID], [From], [To], [LocationID], [Remark], [DateReservation]) values" & _
    "(" & strUsername & ",#" & strFrom & "#,#" & strTo & "#, " & strSubject & ", '" & strRemark & "', #" & FormatDateTime(todaysDate,2) & "#)"  
                
Response.Write "<br>1) " & mySQL
objConn.Execute(mySQL)


Resultaat van de Response.Write :
1) insert into Reservaties([UserID], [From], [To], [LocationID], [Remark], [DateReservation]) values(6,#01/04/2009#,#13/04/2009#, 1, 'test', #29/04/2009#)

Zoals u kunt zien is het correct ingegeven, maar in de database staat de data als volgt :
From = 04/01/2009; To = 13/04/2009...

De website staat om te testen op een gratis brinkster-account!

Wat heb ik al geprobeert?
1. Ik heb proberen alle datum-formats te veranderen van "dd/MM/yyyy" naar "MM/dd/yyyy", maar dit loste het probleem niet op => 04/01/2009 werd dan 01/04/2009 (hetzelfde resultaat dus)

2. Ik heb alles naar "Tekst" omgezet, maar dan kan je geen vergelijkende functies meer maken in de "Query" -> Between, >, < , ...


Weten jullie wat de oorzaak van het probleem is en hoe dit op te lossen (in "SQL servers" heb je dat probleem wss niet, maar heb geen ter beschikking)?

Of hoe zouden jullie het probleem aanpakken?

Mvg,
Frederic

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Gebruik gewoon iso notatie (yyyymmdd); dat werkt altijd ;)
Zie ook Programming FAQ - Getallen en talstelsels @ Datums

[ Voor 44% gewijzigd door RobIII op 29-04-2009 15:32 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
En gebruik parametrized queries. Scheelt ook weer wat steeds terugkerende security problemen :)

Acties:
  • 0 Henk 'm!

  • Vincenz0
  • Registratie: Augustus 2006
  • Laatst online: 12-09 09:48

Vincenz0

Coder

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Function DateTimeToIso(byval dt)
dim y: y=year(dt)
dim m: m=month(dt)
dim d: d=day(dt)
dim h: h=hour(dt)
dim n: n=minute(dt)
dim s: s=second(dt)

  if m < 10 then m="0" & m
  if d < 10 then d="0" & d
  if h < 10 then h="0" & h
  if n < 10 then n="0" & n
  if s < 10 then s="0" & s
  
  DateTimeToIso = y & "-" & m & "-" & d & " " & h & ":" & n & ":" & s
End Function

Function DateToIso(byval dt)
dim y: y=year(dt)
dim m: m=month(dt)
dim d: d=day(dt)

  if m < 10 then m="0" & m
  if d < 10 then d="0" & d
  
  DateToIso = y & "-" & m & "-" & d
End Function


Hiermee zet je een asp datetime variable om naar een iso notatie voor je db.

Coding 4 Fun!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heb je daar iets meer info over? Is dat "parameters" in je "SQL"-code zelf? Dat is wss verschillend voor access.. niet?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Vincenz0 schreef op woensdag 29 april 2009 @ 15:38:
Hiermee zet je een asp datetime variable om naar een iso notatie voor je db.
:o

VBScript:
1
2
3
4
5
6
7
Function DateTimeToIso(byval dt) 
  DateTimeToIso = Year(dt) & Right("0" & Month(dt),2) & Right("0" & Day(dt),2) & " " & Right("0" & Hour(dt),2) & ":" & Right("0" & Minute(dt),2) & ":" & Right("0" & Second(dt),2)
End Function

Function DateToIso(byval dt) 
  DateToIso = Year(dt) & Right("0" & Month(dt),2) & Right("0" & Day(dt),2)
End Function
Verwijderd schreef op woensdag 29 april 2009 @ 15:39:
[...]


Heb je daar iets meer info over? Is dat "parameters" in je "SQL"-code zelf? Dat is wss verschillend voor access.. niet?
Google gewoon eens op parametrized queries :?

[ Voor 51% gewijzigd door RobIII op 29-04-2009 15:44 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Nou vooruit, omdat het bijna vakantie is:
http://support.microsoft.com/kb/200190

Ik werd er net door Google op gewezen dat parameterized queries de juiste term is ;)

[ Voor 34% gewijzigd door bigbeng op 29-04-2009 15:49 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb het geprobeert om de datum in een "ISO"-formaat om te zetten, maar ik krijg een error :

1) insert into Reservaties([UserID], [From], [To], [LocationID], [Remark], [DateReservation]) values(6,#20090404 00:00:00#,#20090418 00:00:00#, 1, 'sdfs', #29/04/2009#)

Microsoft JET Database Engine error '80040e07'

Syntax error in date in query expression '#20090404 00:00:00#'.

Zoals jullie kunnen zien krijg ik een error.. In mijn database staat het als "Datum/Tijd", zonder specifieke notatie.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ik weet niet precies hoe het met Access is, maar je gebruikt nu # en volgens mij moet je, in dit geval althans, weer single quotes (dus ' ) gebruiken... Maar pin me er niet op vast...

Overigens sparen parametrized queries je al deze ellende; als het enigszins mogelijk is zou ik ze toch echt overwegen.

[ Voor 34% gewijzigd door RobIII op 29-04-2009 16:01 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
RobIII schreef op woensdag 29 april 2009 @ 15:59:
Ik weet niet precies hoe het met Access is, maar je gebruikt nu # en volgens mij moet je, in dit geval althans, weer single quotes (dus ' ) gebruiken...
Sorry, ik had moeten vermelden dat ik het al geprobeerd had, krijg dan het onderstaande :

insert into Reservaties([UserID], [From], [To], [LocationID], [Remark]) values(6,'20090408 00:00:00','20090418 00:00:00', 1, 'ddd')

Microsoft JET Database Engine error '80040e07'

Data type mismatch in criteria expression.

mmm.. met de "SQL server" heb je wss die problemen niet direct. Maar bij access, moeten de datums opgeslaan worden met # idpv '

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
En als je i.p.v. DateTimeToIso nu eens DateToIso gebruikt? Ik weet niet of 'ie op z'n bek gaat van de tijd en die gebruik je zo te zien toch niet.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok,

Het is gelukt via de "functies" van Vencenzo! Dus het verschil is dat er nu -> "-" in de datum staan, nu lijkt het allemaal correct te verlopen..

Maar ik zal op het aanraden van iedereen die hier op geantwoord heeft, eens zien of ik geen "parametrized queries" kan gebruiken :)

Thx aan iedereen die mij geholpen heeft, dit is hier echt een super goede site om iemand op weg te helpen :)

THX,
Frederic

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Oh, crap. Dat wist ik ook :D Access wil inderdaad streepjes hebben :X |:(

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • kalechinees
  • Registratie: Mei 2005
  • Laatst online: 21-04 15:02
In een ver verleden :) gebruikte ik altijd de functie datediff om m'n eigen timestamp te maken... Op een of ander manier heb ik met ASP ook altijd ruzie gehad met access en datum velden....

daarna gewoon overstapt op PHP :p

[ Voor 25% gewijzigd door kalechinees op 29-04-2009 16:17 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
RobIII schreef op woensdag 29 april 2009 @ 16:13:
Oh, crap. Dat wist ik ook :D Access wil inderdaad streepjes hebben :X |:(
Lol, maar je hebt me ook wel goed op weg geholpen :) Ik ben gewoon om "Windows Forms" in C# te maken, websites maken deed ik soms eens in mijn vrije tijd, maar is al heel eindje terug :)

Maar ik maakte toen altijd "PHP"-sites met een "MYSQL"-database, nu werkt het allemaal juist wat anders ;)
Pagina: 1