In access leeftijd uit nummer halen

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Anoniem: 50722

Topicstarter
Ik heb een database met leerling gegevens. Elke leerling heeft een leerling nummer bestaand uit 10cijfers: bijvoorbeeld 1810716903. Het 2e t/m 6 cijfer staat voor de geboortedatum. In dit geval zou dat zijn 16 juli 1981--> 16-07-81. Het eerste cijfer en de laatste drie zijn gewone volgcijfers.
Is het mogelijk dat access aan de hand van deze 6 cijfers de leeftijd van de leerling kan berekenen.

Alvast bedankt.

Acties:
  • 0 Henk 'm!

  • ParaNoiMia
  • Registratie: Mei 2000
  • Laatst online: 26-04 19:24
Kijk naar de mid$ functie

(wel een heel erg basic F1 vraag hoor)

Acties:
  • 0 Henk 'm!

  • chicky
  • Registratie: Augustus 2001
  • Laatst online: 31-03 19:18
In VBA is dit niet zo moeilijk.
Met de tekenfuncties zoals Left, Mid e.d. kan het stukje uit de string worden geisoleerd.
Dan de stukjes string weer aan elkaar plakken dat het weer een datum wordt.
Dan de datum van de huidige datum aftrekken en je weet hoe oud het kind is.

(ik zal kijken of ik even tijd heb om een stukje code te schrijven of een stukje code te vinden)

Acties:
  • 0 Henk 'm!

Anoniem: 50722

Topicstarter
Dank je wel. Het kan best een basic vraagje zijn alleen ik heb er bijna helemaal geen kennis van dus moeilijk genoeg voor mij.

Bedankt in ieder geval als je zo'n code kunt geven

Acties:
  • 0 Henk 'm!

  • chicky
  • Registratie: Augustus 2001
  • Laatst online: 31-03 19:18
Hoi,

Nou ik heb net een klein stukje code voor je geschreven.
Als volgt;

Maak een formulier en plaats op het formulier een commandbutton.
Ga op de knop staan en klik met rechter muisknop , ga naar eigenschappen, tabblad gebeurtenissen.
Ga naar de optie "Bij klikken". klik in het vakje ernaast en selecteer de optie "Opbouwfunctie voor programmacode".
Nu krijg je een Visual Basic venster.
Copy, Paste de onderstaande code naar het VB scherm.
Let er wel op dat aan het begin van de code niet twee keer "Private Sub Knop0_Click()" staat en aan het einde niet twee keer "End Sub".

Lees de code door en vul de naam van jouw tabel in waar nu Tabel1 staat en doe het zelfde met de veld namen.

Succes

Code:

Private Sub Knop0_Click()

Dim db As Database
Dim rst As Recordset
Dim strSQL As String
Dim QueryCounter As Integer
Dim i As Integer
Dim Jaar, Maand, Dag As String
Dim Datum As Date
Dim Leeftijd As Integer

Set db = CurrentDb 'open de huidig database
strSQL = "SELECT DISTINCT Tabel1.code,Tabel1.Id FROM Tabel1 order by Tabel1.Id" 'selecteer het veld [code]uit tabel1
Set rst = db.OpenRecordset(strSQL)

rst.MoveLast 'Tellen hoeveel records er in de query zitten
QueryCounter% = rst.RecordCount
rst.MoveFirst

ReDim a$(QueryCounter%, 2) 'een array maken op de juiste grootte

For i% = 0 To QueryCounter% - 1 Step 1 'begin de loop
a$(i%, 0) = rst![code] 'het eerste array veld vullen met de code
Jaar = (Mid(a$(i%, 0), 2, 2)) 'selecteer het jaartal uit de code en noem dit jaar
If Jaar < 3 Then Jaar = "20" & Jaar 'als het geboorte jaar kleiner is dan 03, betekend dit dat het
'geboorte jaar na 2000 ligt.
Maand = (Mid(a$(i%, 0), 4, 2)) 'selecteer de maand uit de code en noem dit maand
Dag = (Mid(a$(i%, 0), 6, 2)) 'selecteer de dag uit de code en noem dit dag
Datum = Dag & "-" & Maand & "-" & Jaar 'de datum is de dag & de maand & het jaartal
a$(i%, 1) = Datum
Leeftijd% = (Date - Datum) / 365 'de leeftijd is de huidige datum - geboortedatum /365 dagen per jaar
a$(i%, 2) = Leeftijd%
rst.MoveNext
Next i%

rst.Close 'de tabel sluiten

strSQL = "Tabel1" 'selecteer tabel1
Set rst = db.OpenRecordset(strSQL)

rst.MoveFirst 'ga naar het eerste record
For i% = 0 To QueryCounter% - 1 Step 1 ' begin de loop
rst.Edit 'ga de tabel bijwerken
rst![Datum] = a$(i%, 1) 'vul het veld datum met de geboortedatum
rst![Leeftijd] = a$(i%, 2) 'vul het veld leeftijd met de leeftijd
rst.Update
rst.MoveNext
Next i%

End Sub

Acties:
  • 0 Henk 'm!

Anoniem: 50722

Topicstarter
Thnx
Pagina: 1