functie openen bij validatie

Status
Niet open voor verdere reacties.

shidan

Gebruiker
Lid geworden
8 jan 2007
Berichten
354
beste,

ik wil de invoer van een veld controleren met een functie.
aan de hand van de geboortedatum wil ik zien hoe oud een persoon is.
onderstaande functie staat in mijn functies.
hoe koppel ik deze in acces?
als ik een geboortedatum heb ingegeven wil ik in het volgeden veld de leeftijd zijn.


Code:
Public Function Age(DoB As Date)
   Age = Int((Date - DoB) / 365.25)
End Function
 
Laatst bewerkt door een moderator:
Je functie is wel een heel erg simpele berekening; als functie is hij niet overdreven correct. Deze wel:

Code:
Function Leeftijd(GeboorteDatum As Variant) As Integer
Dim varAge As Variant
    'Bij leeg, dan nog geen verjaardag, dus 0...
    If Nz(GeboorteDatum, 0) = 0 Then Leeftijd = 0: Exit Function
    'Leeftijd uitrekenen
    varAge = DateDiff("yyyy", GeboorteDatum, Date)
    If Date < DateSerial(Year(Date), Month(GeboorteDatum), Day(GeboorteDatum)) Then
        varAge = varAge - 1
    End If
    Leeftijd = CInt(varAge)

End Function

Dus dat zou mijn eerste aanpassing zijn.

In een formulier of query zet je dan:
formulier: Besturingselementbron =Leeftijd([Geboordatumveld])
query: Leeftijd:Leeftijd([Geboordatumveld])
 
bestaat er bvb ook een manier om de inhoud van een veld te controleren met vba?
een veld bvb contoleren op geldig e-mail adres.

hoe kan k bvb onderstaande functie aanspreken bij het controleren of een veld een geldig e-mail adres bevat?


Code:
Public Function ValidateEmailAddress(ByVal strEmailAddress As String) As Boolean
    On Error GoTo Catch
    
    Dim objRegExp As New RegExp    Dim blnIsValidEmail As Boolean        objRegExp.IgnoreCase = True    objRegExp.Global = True    objRegExp.Pattern = "^([a-zA-Z0-9_\-\.]+)@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$"        blnIsValidEmail = objRegExp.Test(strEmailAddress)    ValidateEmailAddress = blnIsValidEmail
    Exit Function
    
Catch:    ValidateEmailAddress = False    MsgBox "Module: " & MODULE_NAME & " - ValidateEmailAddress function" & vbCrLf & vbCrLf _
        & "Error#:  " & Err.Number & vbCrLf & vbCrLf & Err.Description
End Function
 
Code:
Public Function ValidateEmailAddress(ByVal strEmailAddress As String) As Boolean
On Error GoTo Catch
Dim objRegExp As New RegExp
Dim blnIsValidEmail As Boolean
    
    objRegExp.IgnoreCase = True
    objRegExp.Global = True
    objRegExp.Pattern = "^([a-zA-Z0-9_\-\.]+)@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$"
    blnIsValidEmail = objRegExp.Test(strEmailAddress)
    ValidateEmailAddress = blnIsValidEmail
    Exit Function

Catch:
    ValidateEmailAddress = False
    MsgBox "Module: " & MODULE_NAME & " - ValidateEmailAddress function" & vbCrLf & vbCrLf _
        & "Error#:  " & Err.Number & vbCrLf & vbCrLf & Err.Description
End Function

Deze functie moe je met een IF (als je VBA gebruikt) of met een IIF gebruiken in queries bijvooreeld. Deze functie levert een True of False op. Je roept hem dus aan in een vergelijking; zoals dit queryvoorbeeld:

Code:
CheckEmail:IIF(ValidateEmailAddress([Email])=True;"Geldig emailadres";Fout emailadres")
 
Laatst bewerkt:
beste,

kun je dit voorbeeld in de praktijk omzetten in deze kleine databank?
heeft slechts één tabel
als ik in de gegevensweergave een e-mail ingeef wil ik deze eerst controleren

alvast met dank
 

Bijlagen

Ik heb een query in de db gezet die controleert of een email adres geldig is of niet. Overigens werkt de module niet als je het email adres opmaakt als hyperlink; technisch wordt het hele emailadres er dan twee keer in gezet, en aangezien er een check is op één @-teken, ga je al gelijk de teil in, want in de hyperlink zitten er dus twee. Het email adres heb ik dus teruggezet naar tekst. Dan werkt het wel.

Oveigens kan ik prima typen, dus ik heb geen oefening nodig in het intypen van gegevens. Volgende keer graag zelf je tabel vullen met testgegevens ;)
 

Bijlagen

  • db.rar
    db.rar
    27,8 KB · Weergaven: 14
thnx,

het werkt perfect.

nog een klein vraagje.
is die '0' of '-1' ook te vervangen door bvb 'ja' of 'nee'

en kan bij 0 het e-mail bvb in rode text komen?

alvast met dank
 
Je kunt -1 vervangen door True, en 0 door False als dat helpt... Je moet namelijk op de waarde van de boolean waarde testen en die is nu eenmaal True (-1) of False (0). Dus daar test je dan op. Op een formulier kun je met behulp van Voorwaardelijke Opmaak inderdaad een tekstveld een kleur geven op basis van de waarde in het selectieveld. Kom je daar zelf uit?
 
lukt niet al te best
(lukt eigenlijk niet)

kun jij mij nogmaals helpen?

alvast met dank
 
Ik heb een Voorwaardelijke opmaak aan het veld email toegevoegd.
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan