[VBA] Controleren of datum X vóór datum Y is.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Lunaticc
  • Registratie: Augustus 2010
  • Laatst online: 28-07 23:48
Middag allen,
Ik zit met een klein probleempje waar ik niet uit kom.

Ik heb in Microsoft Access een balans gemaakt. Bedragen die hier in worden gezet, moeten worden goedgekeurd. Je kan hierbij een datum invoeren voor wanneer het bedrag erbij of eraf moet worden geschreven.

Nu wil ik het zo maken, dat als de datum van een bedrag dat je nu probeert in te voeren, zich afspeelt vóór de datum van het laatst goedgekeurde bedrag, hij een foutmelding geeft en stopt.

Echter denkt Access dat 12/22/2010, zich later afspeelt dan 1/4/2011. Tenzij ik iets verkeerd doe (wat me meer voor de hand liggend lijkt ;))

vb.
Afbeeldingslocatie: http://i51.tinypic.com/wbyzk3.jpg

lastConfirmedDate is een string die gevuld wordt met data uit een DMax.
currentEntryDate is een string die gevuld wordt met data uit een DLookup.

Acties:
  • 0 Henk 'm!

  • Sven_Vdb
  • Registratie: Januari 2006
  • Laatst online: 18-02 22:40
Omdat je volgens mij geen string kan vergelijken volgens dit principe.
Toch niet het groter dan / kleiner dan principe.

Cast deze 2 naar een datetime. Dan kan je deze zonder poblemen vergelijken zoals je nu doet.

Acties:
  • 0 Henk 'm!

  • Face_-_LeSS
  • Registratie: September 2004
  • Niet online
Lunaticc schreef op dinsdag 04 januari 2011 @ 14:08:

Echter denkt Access dat 12/22/2010, zich later afspeelt dan 1/4/2011. Tenzij ik iets verkeerd doe (wat me meer voor de hand liggend lijkt ;))
Dat klopt toch? De string "12/22/2010" is ook groter dan de string "1/4/2011"...

Ku-CDate-ch

[ Voor 57% gewijzigd door Face_-_LeSS op 04-01-2011 14:27 ]


Acties:
  • 0 Henk 'm!

  • Lunaticc
  • Registratie: Augustus 2010
  • Laatst online: 28-07 23:48
D'oh, hoe snel je iets simpels als dat over het hoofd ziet.

Hulde voor de snelle reactie, dank beide _O_
Opgelost door simpleweg te converteren;

code:
1
2
3
4
5
6
7
8
9
10
11
Dim lastConfirmed As String
Dim currentEntry As String

lastConfirmed = DMax...
currentEntry = DLookup...

Dim lastConfirmedDate As Date
Dim currentEntryDate As Date
    
lastConfirmedDate = CDate(lastConfirmed)
currentEntryDate = CDate(currentEntry)

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Lunaticc schreef op dinsdag 04 januari 2011 @ 14:56:
code:
1
2
3
4
5
Dim lastConfirmed As String
Dim currentEntry As String

lastConfirmed = DMax...
currentEntry = DLookup...
Waarom geven DMax en DLookup een string terug? Laat je die functies los op een varchar/tekst veld of een datetime veld?

Daarbij gooi je de return value van CDate weer net zo hard terug in een variabele die is gedeclareerd als string (ondanks dat de return value voor CDate een date type is dus).

Wil je niet gewoon zoiets?
code:
1
2
3
4
5
Dim lastConfirmed As Date
Dim currentEntry As Date

lastConfirmed = DMax...
currentEntry = DLookup...

Verder: Waar hoort mijn topic?
PRG >> OFF

[ Voor 50% gewijzigd door RobIII op 04-01-2011 15:40 ]

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!

  • Lunaticc
  • Registratie: Augustus 2010
  • Laatst online: 28-07 23:48
RobIII schreef op dinsdag 04 januari 2011 @ 15:34:
[...]

Waarom geven DMax en DLookup een string terug? Laat je die functies los op een varchar/tekst veld of een datetime veld?

Daarbij gooi je de return value van CDate weer net zo hard terug in een variabele die is gedeclareerd als string (ondanks dat de return value voor CDate een date type is dus).

Wil je niet gewoon zoiets?
code:
1
2
3
4
5
Dim lastConfirmed As Date
Dim currentEntry As Date

lastConfirmed = DMax...
currentEntry = DLookup...

Verder: Waar hoort mijn topic?
PRG >> OFF
Ah, excuses voor het misplaatsen van mijn topic.

De return value van CDate wordt niet teruggestopt in een string variabele? lastConfirmedDate is gedeclareerd als Date.

edit\
Raaaaar.. ik heb die methode die jij daar post al eerder gebruikt, toen kreeg ik echter de default value van Date terug (12:00:00 AM). Nu werkt hij wel 8)7

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Lunaticc schreef op dinsdag 04 januari 2011 @ 15:47:
De return value van CDate wordt niet teruggestopt in een string variabele? lastConfirmedDate is gedeclareerd als Date.
*Jeh... ik was even skeel :P B)

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

Pagina: 1