Gegevens uit een datum halen

Status
Niet open voor verdere reacties.

Scallebe

Gebruiker
Lid geworden
29 okt 2014
Berichten
528
Goede morgen ontwikkelaars,

Is het mogelijk (met een formule of VBA) bepaalde gegevens uit een datum te halen in een nieuw veld?

vb : Geboortedatum : 01/10/1965 - Nationaal nummer 65.10.01-283.55 --> "65" zijn de twee laatste tekens uit de geboortedatum, "10" zijn het 4e en 5e teken uit de geboortedatum
en "01" zijn het 1ste en 2de teken uit de geboortedatum.

Ik heb voor het nationaal nummer in Inputmask : --.--.-- - ---.--

De bedoeling is dat ik in het veld Nationaal nummer een gedeelte reeds automatisch ingevuld krijg na het inbrengen van de geboortedatum : Geboortedatum 01/10/1965 NatNr : 65.10.01 - ---.-- en dat ik enkel nog de laatste 5 cijfers hoef in te vullen en ook het InputMask voor deze laatste 5 tekens behouden.

Hoe kan ik dit formuleren?

Bedankt


Greetz

Pascal
 
Je zult daar een kleine VBA routine voor moeten gebruiken, omdat het aanvullende deel van het nummer moet worden ingevuld door de gebruiker. Tenzij je dat weer uit een ander deel van een ander veld haalt, dan kan het wel met een query.
Je krijgt dan twee gebeurtenissen, om het invoeren te vergemakkelijken:
Code:
Private Sub Form_Current()
Dim Part1 As String
    If Len(Me.Nationaal_Nummer) < 7 Then
        Part1 = Right(Year([geboortedatum]), 2) & Right("00" & Month([geboortedatum]), 2) & Right("00" & Day([geboortedatum]), 2)
        Me.Nationaal_Nummer = Part1
    End If
End Sub

Code:
Private Sub Nationaal_Nummer_GotFocus()
    If Len(Me.Nationaal_Nummer) < 7 Then
        Me.Nationaal_Nummer.SelStart = Len(Me.Nationaal_Nummer) + 3
    End If
End Sub

De eerste code vult het [nationaal nummer] met de eerste cijfers uit de geboortedatum als het veld nog niet volledig is. In dat geval moet het nummer natuurlijk blijven staan. Met de tweede code zet je de cursor op de juiste plaats zodat je, als het veld geselecteerd is, gelijk de ontbrekende cijfers kunt invoeren. Ik heb géén controle gedaan op het veld [Geboortedatum]; bij een nieuw record is dat natuurlijk nog leeg, en valt er ook niks in te vullen in [Nationaal nummer]. Die controle heb je denk ik wel nodig.
 
OctaFish,

Bedankt voor de reactie.

Ik zal van zodra mogelijk testen. Ik hou je op de hoogte.

Greetz

Pascal
 
Goede morgen OctaFish,

Bekijk bijlage Expats BFA-M.zip

Ik heb uw code ingevoerd in de database maar in het veld Nationaal_nummer krijg ik niet automatisch de gegevens uit de geboortedatum.

De code zit in de Form "Nieuwe invoer"

Wat doe ik fout? :confused:

Greetz

Pascal
 
Dat komt omdat je het formulier opent met een nieuw record. Dan is er geen Current event.
Code:
Option Compare Database
Dim Part1 As String

Code:
Private Sub Form_Open(Cancel As Integer)
    [Naam].SetFocus
End Sub

Code:
Private Sub Geboortedatum_AfterUpdate()
    Part1 = Right(Year([Geboortedatum]), 2) & Right("00" & Month([Geboortedatum]), 2) & Right("00" & Day([Geboortedatum]), 2)
    Me.Nationaal_Nummer = Part1
End Sub

Code:
Private Sub Nationaal_Nummer_GotFocus()
    If Len(Me.Nationaal_Nummer) < 7 Then
        Me.Nationaal_Nummer.SelStart = Len(Me.Nationaal_Nummer) + 3
    End If
End Sub

Hiermee kom je al een heel eind. Overigens is bij jou het veld [Nationaal_Nummer] een numeriek veld, en dan krijg je een rare layout. Er vanuit gaande dat er niet mee gerekend gaat worden, is er geen enkele reden om dat veld niet als een tekstveld in te richten en daar voorkom je dus een hoop problemen mee.
 
OctaFish,

Bedankt :thumb:

Ik zal het later pas kunnen aanpassen en testen. Ik hou je verder op de hoogte.

Nog een prettige dag :cool:

Greetz

Pascal
 
OctaFish,

Ik heb eindelijk de tijd gevonden om te testen.

Uw code werkt maar het reultaat is dat de gegevens uit de geboortedatum rechts komen te staan : --.--.6-510.01 terwijl ze links moeten komen : 65 . 10 . 01- --- . --

Ik heb geprobeerd de code te annaliseren om het eventueel zelf te corrigeren maar zonder success.:eek:

Hoe kan dit opgelost geraken?

Thanks

Greetz

Pascal
 
Uw code werkt maar het reultaat is dat de gegevens uit de geboortedatum rechts komen te staan : --.--.6-510.01 terwijl ze links moeten komen : 65 . 10 . 01- --- . --
Heb je mijn laatste opmerking in bericht #5 gelezen? Die stipt dus juist dit punt aan. En daar lees je dus ook de oplossing :).
 
OctaFish,

Ik had het toen al gelezen maar nog niet aangepast.

Nu werkt het zoals het moet.

Thanks :thumb:

Greetz

Pascal
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan