Datums vergelijken

Status
Niet open voor verdere reacties.

assessor

Gebruiker
Lid geworden
7 jan 2007
Berichten
184
Deze vraag oorspronkelijk geplaatst op Office/Acces forum maar lijkt mij hier meer op z'n plek.
Ik zoek een stukje VB code waarmee ik de systeemdatum met een file datum kan vergelijken en aan de hand van de uitkomst verder met de code kan.

(hier wat onzin verwijderd)

Inmiddels ben ik even aan het stoeien gegaan en ben tot onderstaande gekomen.
Private Sub cmdUpdate_Click()

DateX = Date
DateY = FileDateTime("D:\test.txt")

If DateX = DateY Then
Beep
Else
Beep
Beep
End If

End Sub

Hieruit is duidelijk dat ik nooit slechts een Beep zal horen omdat DateX is Datum en DateY is Datum+Tijd. "FileDate" zou te simpel zijn dus dat bestaat niet.
Now() gebruiken i.p.v. Date() is ook geen optie daar ik slechts voor een fractie van een seconde de Beep Beep zou horen en dat is niet de bedoeling.
Met mijn volledig gebrek aan VB kennis kom ik denk ik niet verder.

vast dank voor alle tips
 
Laatst bewerkt:
stap verder

Niet stil zittend en wachtend op alle oplossingen ben ik inmiddels tot het volgende gekomen.
Private Sub cmdUpdate_Click()

DateK = Date
DateL = FileDateTime("D:\Test.txt")
DateX = Left(DateK, 9) 'Deze datum moet nu dus ook tussen "" anders gaat vergelijking weer niet op
DateY = Left(DateL, 9) 'Verwijdert tijd deel uit string, datum staat nu wel tussen ""

If DateX = DateY Then
Beep
Else
Beep
Beep
End If

End Sub
Het werkt maar op de een of andere manier vind ik het wat omslachtig. Ben nu aan het onderzoeken hoe "Format" mij hierbij zou kunnen helpen.
 
Hoi

Code:
Private Sub cmdUpdate_Click()
    
    Beep
    If Int(FileDateTime("C:\AboutWordExcel.xls")) <> Date Then Beep
    
End Sub

Goede tip voor in het vervolg... declareer je variabelen ;)

Wigi
 
Uit de help van FileDateTime:
Geeft als resultaat een Variant (Date) met de datum en het tijdstip waarop het bestand werd gemaakt of voor het laatst werd gewijzigd.

FileDateTime is dus een Variant terwijl de waarde waarmee je hem vergelijkt (date) een datum veld is...

Plus een goede les van Wigi is natuurlijk ALTIJD je variabelen declareren.

Door bv Datevalue(FileDateTime("C:\AboutWordExcel.xls")) te gebruiken verander je de variant in een echte datum, zelfs automagicaly zonder tijd :).

SucZeven
 
Wigi/namliam, (mailman? vast geen toeval :-))

Even een drukke week gehad...
Dank voor jullie wijze lessen, dit is wat ik ervan heb gemaakt.

Private Sub cmdUpdate_Click()
On Error GoTo Err_cmdUpdate_Click

Dim DateX As Date
Dim DateY As Date
Dim DateZ As Date

DateX = DateValue(FileDateTime("d:\testx.txt"))
DateY = DateValue(FileDateTime("d:\testy.txt"))
DateZ = Date

If DateX = DateZ And DateY = DateZ Then

Beep

Else

Beep
Beep

End If

Exit_cmdUpdate_Click:
Exit Sub

Err_cmdUpdate_Click:
MsgBox Err.Description
Resume Exit_cmdUpdate_Click

End Sub

Kan het jullie goedkeuring wegdragen of kan het nog strakker?

Nu dit werkt wil ik een stap verder en deze actie nog minder "fraudegevoelig" maken door te voorkomen dat een slim iemand door de beide files met een kleine modificatie opnieuw op te slaan Beep i.p.v. Beep Beep produceren.

Iemand enig idee?

Groet, assessor
 
Assessor

Nee geen toeval, alleen is Mailman vaak al ingepikt dus heb ik mijn handle omgedraaid :-) Goed gezien...

Je zou een "bit by bit" character analyse van het bestand kunnen doen om er achter te komen hoe uniek ieder bestand is, maar wellicht is het handig om te weten van je (eind)doel is dan kunnen we meedenken.

Groeten
 
namliam,

Ik zal proberen een korte omschrijving te geven.

De "Update" knop verwerkt dagelijks twee Excel files, deze files moeten wel dagelijks vanuit een andere database geëxporteerd worden.
Er was geen controle op de files, alleen een pop-up bij het bij het gebruik van de "Update" knop met de waarschuwing alleen door te gaan indien de lijsten vernieuwd waren.
Natuurlijk zijn er altijd mensen die dan gewoon doorgaan. Resultaat, een recente update datum op het scherm maar wel met oude data, dat heb ik nu ondervangen.
Natuurlijk kan ook dit omzeild worden maar dan is iemand wel heel erg fout bezig.

Ik weet niet hoe het anders/beter zou kunnen.

Groet, assessor
 
Bevat de data in het bestand niet toevallig een datum welke je kan controleren op recentheid?
 
namliam,

Dat is helaas niet gegarandeerd, dus ook niet bruikbaar als controlle.
Ik moet zeggen dat de oplossing zoals deze er nu is goed werkt.
Nogmaals, allen dank voor het meedenken.

groet, assessor
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan