waarom werkt deze code niet

Status
Niet open voor verdere reacties.

dinoshop

Terugkerende gebruiker
Lid geworden
8 sep 2000
Berichten
1.100
Code:
Option Compare Database
Option Explicit

Private Sub VerloopDatum_AfterUpdate()
    If IsVerlopen(CVDate(VerloopDatum)) Then
        MsgBox "Verlopen"
    Else
        If IsBijnaVerlopen(CVDate(VerloopDatum)) Then
            MsgBox "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

deze gebruik ik in een formulier met datums maar er gebeurt niets.
 
Geen idee waarom het bij jou niet werkt. Net een testje gedaan en bij mij doet-ie het.
 
ik ben aan het proberen geslagen maar met afterupdate werkt die niet kan het zijn dat die via een subform niet werk of iets anders ingesteld moet worden?
 
oplossing gevonden
nu een vraag hoe moet ik de formule aanpassen als er geen datum voorkomt ?
 
Begin eens met de code te posten die nu bij jou wél werkt.
 
code is zelfde alleen niet via afterupdate maar via bijaanwijzing via formulier
en dat werkt perfect
maar nu is zo dat er in bestand ook mensen staan zonder verloopdatum dus 0 en die zou ik graag verwijden dat hij dan een fout geeft en vba opent.
dus zoiets als iif verlopen =nul then verlopen is "0" denk ik zo !!!
maar jij weet dat vast beter.
 
... mensen staan zonder verloopdatum dus 0 en die zou ik graag verwijden dat hij dan een fout geeft en vba opent.
Je vindt het hopelijk niet gek als ik deze zin niet helemaal snap? "verwijden" zou nog "verwijderen" kunnen zijn, maar eerlijk gezegd snap ik niet wat er moet gebeuren bij de personen zonder datum.
 
oke nog een poging haha
als ik nu een nieuwe formulier open waar nog geen verloopdatum staat, opent hij de vba en zeg fout .
nou weet ik dat dit makkelijk op te lossen is door bv date() in veld te zetten.
maar het kan ook in stukje vba alleen hoe was dat ook al weer ?
hopelijk begrijp je me probleempje
 
Wat wil je doen? De huidige Datum in dat veld zetten? Of alleen de fout 'doorspoelen'?
 
Dan krijg je zoiets:
Code:
If Nz(verloopdatum, 0) = 0 Then
    MsgBox "Geen datum ingevuld"
Else
    If IsVerlopen(CVDate(verloopdatum)) Then
        MsgBox "Verlopen"
    ElseIf IsBijnaVerlopen(CVDate(verloopdatum)) Then
        MsgBox "Bijna verlopen"
    End If
End If
De eerste regel kun je nog vervangen door andere checks:
Code:
If IsNull(verloopdatum) Then
Code:
If verloopdatum Is Null Then
Code:
If verloopdatum = vbNullString Then
Die allemaal weer anders checken. Dus moet je maar even uitproberen welke het beste werkt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan