Verloop datum

Status
Niet open voor verdere reacties.

Smitty89

Gebruiker
Lid geworden
18 sep 2010
Berichten
19
Ik ben bezig met een 'database' waarin ook afgifte data's van certificaten zijn opgenomen. Nu zou ik graag het volgende willen: de afgifte datum van een certificaat is bijv 19-2-2011, het certificaat is 5 jaar geldig, dus verloopt op 19-2-2016. Dat er bijv 6 maanden van te voren dus in dit geval 19-8-2015, de datum in de tabel rood wordt oid. Is dit mogelijk? Zo ja, hoe is dit te realiseren?
 
Code:
Private Sub Form_Current()

If IsVerlopen(CVDate(VerloopDatum)) Then
        MsgBox "BeveiligingsPas Verlopen"
    Else
        If IsBijnaVerlopen(CVDate(VerloopDatum)) Then
            MsgBox "Beveiligingspas Bijna verlopen"
        End If
    End If
End Sub

Function IsVerlopen(pDatum As Date) As Boolean
     IsVerlopen = IIf(pDatum < DateAdd("m", -3, Date), True, False)
End Function

Function IsBijnaVerlopen(pDatum As Date) As Boolean
     IsBijnaVerlopen = IIf(pDatum > DateAdd("m", -3, Date) And VerloopDatum < DateAdd("d", -1, Date), True, False)
End Function

dit iets
 
Ik heb niet veel ervaring met Access, dus voor mij ziet dat er al snel geloofwaardig uit ;-), maar waar zou ik die code's in moeten vullen?
 
stuur anders ff je opzetje zet ik het er in test het meteen even .
 
Dat er bijv 6 maanden van te voren dus in dit geval 19-8-2015, de datum in de tabel rood wordt oid.
Lijkt mij een nogal overbodige stap. Opmaak in tabellen is wat mij betreft hetzelfde als de fundering van een huis een leuk behangetje geven. Ziet er prachtig uit als je een keer in de 5 jaar onder de grond moet zijn, maar is het functioneel? Ik heb mijn twijfels :). Waar je meer aan hebt is Voorwaardelijke Opmaak in een formulier waar je de functie van dinoshop ook helemaal niet nodig voor hebt. Ik hoop voor je dat je de geldigheidstermijn in een veld hebt staan, en dat je met DateAdd en Voorwaardelijke opmaak dus kunt controleren of de waarschuwingskleur moet verschijnen of niet.
Nog veel mooier is natuurlijk om een aparte query te maken die een lijst laat zien van de certificaten die gaan verlopen, en die je bij het starten van je db gelijk op het scherm zet. Dan zie je het namelijk veel beter.
 
Een lijst die direct laat zien welke certificaten gaan verlopen is het mooiste. Nu mijn volgende vraag: hoe krijg ik dat voor elkaar? Zoals eerder gezegd heb ik niet veel ervaring (nog) met Access dus als het uitgebreid uitgelegd kan worden, dan graag
 
De basis kun je denk ik zelf wel maken. Om te beginnen heb je een query nodig die de records laat zien die aan het criterium voldoen. Daarvoor maak je dus een paar velden in de query die met DateAdd op basis van de termijn en Certificaatdatum. Het is daarbij het makkelijkst als je de datum altijd in jaren opslaat, en niet in jaren of maanden, want de DateAdd formule rekent met een vaste parameter. Dus uitgaande van jaren ziet DateAdd er dan zo uit:
Code:
Verloopdatum: DateAdd("yyyy";[Termijn];[CertificaatDatum])
Gebruik je maanden, dan krijg je dit:
Code:
Verloopdatum: DateAdd("m";[Termijn];[CertificaatDatum])
Als je een termijn van 5 jaar hebt, dan vul je dus in het veld [Termijn] de waarde 60 in, dan ben je er ook.
Bij elk certificaat weet je nu dus wanneer het verloopt; de volgende stap is nu filteren op certificaten die tussen vandaag en 6 maanden verlopen. En dat doe je met een criterium:
Code:
Between Date() And DateAdd("m";6;Date())
En nu zie je alle certificaten die verlopen tussen vandaag en 6 maanden. Daar maak je dan een formulier op, en dat formulier moet dan worden geopend op het moment dat er meer dan 1 record is. En dat is natuurlijk logisch: zijn er geen certificaten, dan hoeft het formulier ook niet te worden geopend. Ik gebruik vaak een startformulier, en dat formulier kijkt dan of er records zijn of niet. Op het startformulier zet je dan zoiets:
Code:
Private Sub Form_Open(Cancel As Integer)
    With CurrentDb.OpenRecordset("SELECT * FROM qCert_Vervaldatum")
        If .RecordCount > 0 Then
            DoCmd.OpenForm "frmCert_Vervaldatum", , , , , acDialog
        End If
        .Close
    End With
End Sub
En dan heb je alles afgetikt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan