Datum formaat

Status
Niet open voor verdere reacties.

h.van.bouwel

Gebruiker
Lid geworden
20 jun 2004
Berichten
51
Goedemiddag

In mijn database laad ik een file op in een tabel. dit lukt netjes. De filename bevat een datum. Deze datum kan ik uit de naam halen en ik giet die in het formaat dd/mm/yyyy. Dit lukt ook nog. Deze variabele wil ik dan via een SQL instructie uploaden naar een 2de tabel en daar loopt het fout. De datum wordt in de tabel weergegeven als mm/dd/yyyy. In dat geval geeft het veld ook de foutieve datum weer, bijvoorbeeld:
ik vorm 05/10/2008 (= 5 oktober 2008)
ik laad op 10/05/2008 (= 10 mei 2008)

Alle veriabelen zijn in het begin van mij routine gedeclareerd.
hieronder de code die ik gebruik om de datum te vormen en te uploaden:
intY = Left(Right(varFile, 14), 4)
intM = Mid(Right(varFile, 14), 6, 2)
intD = Mid(Right(varFile, 14), 9, 2)
strEffectiveDate = Format(intD & "/" & intM & "/" & intY, "dd/mm/yyyy")
MsgBox strEffectiveDate

DoCmd.SetWarnings False
strSQLAdd = "INSERT INTO tbl_CCR ( [Upload Date], [Effective Date], [Upload Source] )SELECT ttbl_CCR.*, Date() AS [Upload Date],#" & strEffectiveDate & "# AS [Effective Date], 'CCR' AS Source FROM ttbl_CCR"
DoCmd.RunSQL strSQLAdd

Iemand enig idee wat er fout gaat?
Alvast bedankt voor de info.
 
Je ontleed de datum in delen, maar voegt ze vervolgens weer samen in het oude formaat

Code:
strEffectiveDate = Format(intD & "/" & intM & "/" & intY, "dd/mm/yyyy")

Zou dat dan niet zo moeten zijn

Code:
strEffectiveDate = Format(intD & "/" & intM & "/" & intY, "mm/dd/yyyy")
 
Goedemiddag Withaar

Wat je voorstelt werkt wel, maar eigenlijk zou dat niet nodig moeten zijn.
de datum dit ik uit elkaar haal en daarna weer samen stel, gebeurd eigenlijk als volgt:

varFile = Reports 2008-10-05 => effectivedate 05 oktober 2008
intY = 2008
intM = 10
intD = 05
strEffectiveDate = Format(intD & "/" & intM & "/" & intY, "dd/mm/yyyy")
MsgBox strEffectiveDate = 05/10/2008

Dus volgens mij zou strEffectiveDate correct gevormd moeten zijn en doormede ook correct moeten worden overgebracht naar de tabel.

Of ben ik daar fout in?
 
De clue zit m.i. in het 'format'.

Je hebt schijnbaar een bestand met de naam Report + datum in yyyy-mm-dd formaat en je SQL database heeft om de een of andere reden een mm-dd-yyyy formaat nodig als input.
Misschien handiger dit aan te passen naar yyyy-mm-dd, dat snappen de meeste van ons wel, dat amerikaanse formaat van eerst maand, dan dag en dan jaar is voor ons erg ongewoon.

Met format geeft je het doel format aan, niet het format waarin het aangeleverd wordt, vandaar mm/dd/yyyy.

Code:
varFile = "Reports 2008-10-05"
strEffectiveDate = Format(mid(varFile;9;10) , "mm/dd/yyyy")
MsgBox strEffectiveDate

is eigenlijk al genoeg, probeer maar eens.
 
Laatst bewerkt:
En om alles nog lastiger te maken: vba verwerkt intern data op Amerikaans formaat, TENZIJ deze datum ongeldig is, dus:
Code:
    Dim ddate As Date
    ddate = "10-12-2008"
    Debug.Print Month(ddate) 'resultaat: 12
    ddate = #10/12/2008#
    Debug.Print Month(ddate) 'resultaat: 10
    
    ddate = "10-13-2008"
    Debug.Print Month(ddate) 'resultaat: 10
    ddate = #10/13/2008#
    Debug.Print Month(ddate) 'resultaat: 10
 
Tja, maakt het er eigenlijk niet beter/makkelijker op.

Wat moet je met een datum als "08-10-05".

Is dat 8-10-2005, of 10-8-2005 of 10-5-2008... :evil:
Verpakt op... houdbaar tot...etz. zeg het maar.

Gelukkig hebben we de ISO normen (8601) Met als typisch kenmerk dat een datum genoteerd wordt van meest naar minst significant onderdeel, dus eerst het jaar, dan de maand en vervolgens de dag, dan uur, minuten en dan seconden. Wel zo handig als we dat allemaal zouden gebruiken.
 
Laatst bewerkt:
Afhankelijk van je bedoeling kan een spatie wonderen doen:

Code:
varFile = "Reports 2008-10-05"
MsgBox Format(mid(varFile,9) , "mm/dd/yyyy ")
 
Goedemiddag

Ondertussen doet alles wat het moet doen. ik heb het format aangepast zoals Withaar had voorgesteld. Uiteindelijk krijg ik de datum te zien zoals ik het wil voor mijn toepassing.

Bedankt voor de hulp.

groetjes
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan