I have a VB6 legacy program that has been quietly converting Now() Date to American format ie 8/4/2013 is inserted into an Access database as 4 August 2013 but 23/3/2013 is fine. This has been happening since 2002 but nobody noticed until now. Most updates were done at the end of the month.
If I extract the Procedure and run it in a dummy program it works fine. But somewhere in the application code something is persuading ADO to try and convert the date.
It is done in a ADO Command and the date is set up as a DateTimeStamp parameter
eg
strSQL = "Insert into TSCDATA " _
& " ( FID, FNAME, FPID, FCREATEDATE, FLNKEDTDATE, FSIZE)" _
& " values ( ? , ? , ? , ? , ? , ? ) "
with mADOCmdInsert
.Name = CMD_INSERT
.CommandText = strSQL
.CommandType = adCmdText
.ActiveConnection = m_conn
.Prepared = False
.Parameters.Append .CreateParameter(prID, adInteger, adParamInput)
.Parameters.Append .CreateParameter(prNAME, adChar, adParamInput, 16)
.Parameters.Append .CreateParameter(prFPID, adInteger, adParamInput)
.Parameters.Append .CreateParameter(prFCREATEDATE, adDBTimeStamp, adParamInput)
.Parameters.Append .CreateParameter(prFLNKEDTDATE, adChar, adParamInput, 8)
.Parameters.Append .CreateParameter(prFSIZE, adChar, adParamInput, 8)
End With
Elsewhere in the module:
dteNow = Now
With mADOCmdInsertScorpat
.Parameters(prID).Value = lngId
.Parameters(prNAME).Value = txtName
.Parameters(prFPID).Value = VersionId
.Parameters(prFCREATEDATE).Value = dteNow
.Parameters(prFLNKEDTDATE).Value = ""
.Parameters(prFSIZE).Value = txtSize
.Execute lngRecsAffected
End With
Has anyone come across this before and now why this is happening?
Thanks