Toon posts:

ASP Datum probleem Nederlands formaat Access DB

Pagina: 1
Acties:

Verwijderd

Topicstarter
Als ik b.v. de datum 12-2-2006 (12 feb 2006) probeer te laden in mijn Access DB wordt de datum getransformeerd naar 2-12-2006 (2 dec 2006).
De datum 13-2-2006 (13 feb 2006) wordt wel als 13-2-2006 geladen in de database.

Locaal wordt de Nederlandse datumnotatie gebruikt terwijl de provider een engelse versie draait.
In de database is de datum als shortdate gedefinieerd.

De volgende code heb ik gebruikt.

@LANGUAGE="VBSCRIPT" LCID=1043
Option Explicit

session.LCID = 1043
Setlocale("nl")


if Isdate(datum_van) then
ins_dbvelden = "datum_van"
datum_van = cdate(MM_datum_van)
ins_dbwaarden = "'" & datum_van & "'"
else
foutboodschap datum
end if

Query = "insert into Agenda" & " (" & ins_dbvelden & ") values (" & ins_dbwaarden & ")"

Het zal wel een simpel probleem zijn, maar wie kan mij verder helpen :'(

  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 30-01 09:44

Jaspertje

Max & Milo.. lief

Moeten er om data in Access geen ##? (#19-01-2006# dus) en misschien kan je 12-Sep-2006 gaan invoeren ipv 12-09-2006, dam wordt alles geconverteerd door Access zelf

[ Voor 71% gewijzigd door Jaspertje op 22-03-2006 13:45 ]


  • its_Muppet
  • Registratie: Juli 2003
  • Laatst online: 16-02 12:42
Het zal wel een simpel probleem zijn, maar wie kan mij verder helpen
Ik vrees dat ik je uit de droom moet helpen. Ik werk zelf als 2e lijns helpdesk / projectmanager / tester bj een softwareontwikkelaar en dit onderwerp staat al sinds het begin van Access op diverse fora en er is nog nooit een eenduidig universeel antwoord op gevonden.

waar je overigens ook nog mee zit is engels UK en engels US.

Hetzelfrde probleem speelt ook op bij een decimaalscheidingsteken.

[ Voor 16% gewijzigd door its_Muppet op 22-03-2006 13:46 ]

"Assumption is the mother of all f#ckups" Travis Dane (Under Siege 2: Dark Territory)


  • Aram
  • Registratie: Februari 2004
  • Laatst online: 14-08-2025
Probeer het volgende:

Visual Basic:
1
sFormattedDate = FormatDateTime("2006-02-12")


Dit geeft als uitvoer de datum geformatteerd volgens de instellingen van je system (regional settings).

  • Gonadan
  • Registratie: Februari 2004
  • Nu online

Gonadan

Admin Beeld & Geluid, Harde Waren
Ik heb hetzelfde probleem gehad en heb het uiteindelijk maar als varchar in de db gegooid.

Dan maar in de ASP code werken met Day en Month apart. 8)7 |:(

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:32
Gebruik maken van parametrized queries en alle problemen mbt datums zijn van de baan.
Gonadan schreef op woensdag 22 maart 2006 @ 14:00:
Ik heb hetzelfde probleem gehad en heb het uiteindelijk maar als varchar in de db gegooid.

Dan maar in de ASP code werken met Day en Month apart. 8)7 |:(
Dat is nu eens het stomste wat je kan doen.
Wat als je het verschil nu wil weten tussen 2 datums ?
Wat als je per abuis eens de datum als dd/mm/yyyy en eens als mm/dd/yyyy opslaat ?

[ Voor 73% gewijzigd door whoami op 22-03-2006 14:04 ]

https://fgheysels.github.io/


  • its_Muppet
  • Registratie: Juli 2003
  • Laatst online: 16-02 12:42
Aram schreef op woensdag 22 maart 2006 @ 14:00:
Probeer het volgende:

Visual Basic:
1
sFormattedDate = FormatDateTime("2006-02-12")


Dit geeft als uitvoer de datum geformatteerd volgens de instellingen van je system (regional settings).
Is een leuke, maar als de applicatie op 2 clients geinstalleerd staat en de ene heeft regional settings USA en de andere NL, hie weet Access dan dat het 12 februari is ipv 2 december?

"Assumption is the mother of all f#ckups" Travis Dane (Under Siege 2: Dark Territory)


  • Gonadan
  • Registratie: Februari 2004
  • Nu online

Gonadan

Admin Beeld & Geluid, Harde Waren
whoami schreef op woensdag 22 maart 2006 @ 14:03:
Gebruik maken van parametrized queries en alle problemen mbt datums zijn van de baan.


[...]

Dat is nu eens het stomste wat je kan doen.
Wat als je het verschil nu wil weten tussen 2 datums ?
Wat als je per abuis eens de datum als dd/mm/yyyy en eens als mm/dd/yyyy opslaat ?
Omdat als ik de maand en de dag apart opvraag uit de systeem datum en ze dan volgens de nederlandse manier opsla ik weet wat ik heb :)

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

its_Muppet schreef op woensdag 22 maart 2006 @ 14:05:
Is een leuke, maar als de applicatie op 2 clients geinstalleerd staat en de ene heeft regional settings USA en de andere NL, hie weet Access dan dat het 12 februari is ipv 2 december?
Als je in het formaat yyyy-mm-dd invoert herkent Access het toch automatisch goed? Voor zover ik weet wordt de notatie yyyy-dd-mm namelijk nergens gebruikt. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Aram
  • Registratie: Februari 2004
  • Laatst online: 14-08-2025
-NMe- schreef op woensdag 22 maart 2006 @ 14:17:
[...]

Als je in het formaat yyyy-mm-dd invoert herkent Access het toch automatisch goed? Voor zover ik weet wordt de notatie yyyy-dd-mm namelijk nergens gebruikt. :)
Juist :P

Dus het volgende werkt volgens mij altijd:
SQL:
1
2
INSERT INTO Agenda ( datum_van )
VALUES ('2006-02-12');


Maar, kan het ook fout hebben, heb allang niets meer gedaan met Access.

  • giMoz
  • Registratie: Augustus 2002
  • Laatst online: 21-01 09:10

giMoz

iets met meester...

idd, voor databases is het handiger om de datum om te draaien, alle dbms'en hanteren voor zover ik weet hetzelfde systeem: YYYYMMDD, al dan neit met streepjes of slashes...

Of niet natuurlijk...


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 13:08

Janoz

Moderator Devschuur®

!litemod

Parametrized queries kan blijkbaar niet vaak genoeg benadrukt worden. Wanneer overal te pas en te onpas datatypes van en naar strings geconverteerd worden is het vragen om dit soort problemen. Een variabele van het type date of float is nooit en te nimmer fout interpreteerbaar. Converteren naar een string is iets dat je pas doet wanneer je iets op het scherm afdrukt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:32
Plus het feit dat parametrized queries Sql Injection verhelpen.

https://fgheysels.github.io/


  • giMoz
  • Registratie: Augustus 2002
  • Laatst online: 21-01 09:10

giMoz

iets met meester...

onder ASP is het niet erg gebruikelijk omdat dat VBScript ook geen datatypes kent...

of iig niet direct onderscheid, tzijn allemaal variants

Of niet natuurlijk...


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Dat jij geen datatypes ziet wil niet zeggen dat ze er niet zijn. De VBScript engine zal onder water wel heel wat checken om te zien met wat voor data hij te maken heeft. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:52

gorgi_19

Kruimeltjes zijn weer op :9

-NMe- schreef op woensdag 22 maart 2006 @ 16:22:
Dat jij geen datatypes ziet wil niet zeggen dat ze er niet zijn. De VBScript engine zal onder water wel heel wat checken om te zien met wat voor data hij te maken heeft. ;)
In ASP / VBScript waren alle variabelen toch van het type variant?

[ Voor 3% gewijzigd door gorgi_19 op 22-03-2006 16:27 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • giMoz
  • Registratie: Augustus 2002
  • Laatst online: 21-01 09:10

giMoz

iets met meester...

ja, het zijn allemaal variants... maar
code:
1
2
3
4
dim a,b
a=1
b="1"
Response.Write(a=b)

zal false geven...

Wat dat betrefd is VBscript ook een K.U.T. taal...

op naar .net C# dan maar? ;)

[ Voor 9% gewijzigd door giMoz op 22-03-2006 16:29 ]

Of niet natuurlijk...


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 30-01 09:44

Jaspertje

Max & Milo.. lief

Klopt allemaal, maar zodra je naar Access toe gaat, zal access het wel als datatype x behandelen

Verwijderd

Topicstarter
-NMe- schreef op woensdag 22 maart 2006 @ 14:17:
[...]

Als je in het formaat yyyy-mm-dd invoert herkent Access het toch automatisch goed? Voor zover ik weet wordt de notatie yyyy-dd-mm namelijk nergens gebruikt. :)
:*) dit werkt inderdaad, bedankt

Verwijderd

Topicstarter
Jaspertje schreef op woensdag 22 maart 2006 @ 13:39:
Moeten er om data in Access geen ##? (#19-01-2006# dus) en misschien kan je 12-Sep-2006 gaan invoeren ipv 12-09-2006, dam wordt alles geconverteerd door Access zelf
:) Ook deze optie werkt, bedankt voor de moeite

Verwijderd

Ik zal het nog maar eens benadrukken, als je toch zo nodig je datum om wilt zetten naar een string.

ISO 8601
Het internationele formaat is: YYYY-MM-DD

Gebruik niet Format("yyyy-mm-dd",date) o.i.d. Omdat je kans hebt dat de "-" aangepast wordt.

Dus zoiets... (zelf syntax ff checken)
code:
1
2
3
4
datestr = _
  Format("0000",Year(myDate)) & "-" & _
  Format("00",Month(myDate)) & "-" & _
  Format("00",Day(myDate))

[ Voor 25% gewijzigd door Verwijderd op 23-03-2006 18:31 ]

Pagina: 1