[Access] - Inconsistente datumvelden

Pagina: 1
Acties:

  • Tsjipmanz
  • Registratie: Oktober 2000
  • Laatst online: 13-05 14:52

Tsjipmanz

Der Rudi ist da

Topicstarter
Na urenlang pogingen ondernomen te hebben om het zelf voorelkaar te krijgen gooi ik toch maar de handdoek in de ring om te kijken of hier nog nuttige tips worden gegeven.

Probleemomschrijving is erg simpel:

Situatie: Ik heb een tabel waar onder meer datumvelden instaan. Deze datumvelden wil ik exporteren naar excel. In feite doe ik dit met de volgende VBA-code (heb het een beetje uitgekleed voor de overzichtelijkheid):

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    Set Excelsheet = CreateObject("Excel.Sheet")
    Set resultaatQueryDef = MyDb.QueryDefs("Testbatch")
    Set resultaatQuery = resultaatQueryDef.OpenRecordset
    
    Excelsheet.Application.Visible = True
    
    regel = 1
    resultaatQuery.MoveFirst
    
    Do While Not resultaatQuery.EOF
        
        Excelsheet.ActiveSheet.Cells(regel, 1).Value = Format(CDate(resultaatQuery("Porteringsdatum")), "dd-mm-yyyy") & " 09:00"
        Excelsheet.ActiveSheet.Cells(regel, 2).Value = Format(CDate(resultaatQuery("Ontvangstdatum")), "dd-mm-yyyy") & " 09:00"
        resultaatQuery.MoveNext
        regel = regel + 1
    Loop


De velden Porteringsdatum en Ontvangstdatum zijn beide datum/tijd-velden.

Probleem:
Bij het exporteren naar excel (wat in feite uitstekend lukt) krijgen sommige rijen een ander gegevenstype. Een voorbeelduitvoer is dus:
code:
1
2
3
4
01-01-2006 9:00 01-01-2005 9:00
19-07-2004 09:00    17-07-2004 09:00
06-04-2004 9:00 06-03-2004 9:00
24-01-2004 09:00    24-01-2006 09:00

Iedereen ziet meteen dat dit niet klopt, en dat de rijen met "09:00" de goeie zijn. Deze hebben ook als (excel-)gegevenstype "Standaard", terwijl de foute rijen gegevenstype "Aangepast (dd-mm-jjjj u:mm)" hebben.

Het rare is dat alle gegevens op exact dezelfde manier zijn ingevoerd en ik er maar niet achterkom waarom hij het datatype bij sommige velden automatisch aanpast.

Ik ben de wanhoop nabij, misschien heeft iemand ervaring met dit soort zaken en kan mij alsnog uit de brand helpen?

There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -


Verwijderd

Het gaat waarschijnlijk fout vanwege de volgorde waarin Excel dag-maand-jaar interpreteert. Daar waar de tijd op 9:00 staat, ipv 09:00 gaat het relatief goed, omdat zowel de dagen als de maanden onder de 12 zitten. Waar het niet goed gaat, zoals bijvoorbeeld bij 19-07-2004 of 24-01-2004, ziet Excel de dagen als maanden, en de 19e en 24e maanden bestaan niet. Volgens mij ben je klaar als je DD-MM-YYYY omdraait in MM-DD-YYYY.

Succes!

  • KingRichard
  • Registratie: September 2002
  • Laatst online: 21-03-2025

KingRichard

former Duke of Gloucester

Dat is inderdaad het probleem. Je kunt dit ook oplossen door, voordat je de waardes gaat exporteren, de rijen in Excel het juiste formaat te geven.
Visual Basic:
1
Excelsheet.ActiveSheet.Columns("A:B").NumberFormat = "d/mm/yy h:mm;@"
Als de datums in je DB gewoon DateSerials zijn, hoef je ze niet eens om te zetten, dat doet Excel dan voor je.
Het geven van het juiste formaat kan ook ná het exporteren, dat is misschien nog veiliger.

a horse! a horse! my kingdom for a horse! (exeunt)
[got.profile] | [t.net.profile] | [specs]


  • Tsjipmanz
  • Registratie: Oktober 2000
  • Laatst online: 13-05 14:52

Tsjipmanz

Der Rudi ist da

Topicstarter
Yo jullie hebben helemaal gelijk. Ik was zo enthousiast dat ik meteen een kop koffie van mn bureau afsloeg, dat is weer wat minder :)

Dit lost mijn probleem helemaal op. Ik had idd wel eens gelezen over dat excel nogal eens zijn eigen gang wil gaan bij het importeren van datums maar hier was nu ik echt op gekomen! Bedankt, Janoz mag er een slotje opzetten als ie niet met zn huis bezig is ;)

There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -