13. september 2004 - 11:05Der er
5 kommentarer og 1 løsning
dato problem i forespørgsel
Hej Jeg har en Cprnr som jeg konvertere til dato hvorefter jeg vil beregne alder ud. Jeg bruger alder i dage: DateValue(Mid([CPRnr];1;2) & "-" & Mid([CPRnr];3;2) & "-" & Mid([CPRnr];5;2)) alder = date() - alder i dage Problemet er at personer født før 1930 bliver skrevet som 2029 etc. Dvs alder bliver negativ!!! Ikke så godt :-) Er der noget jeg kan gøre? Morten
Brug af AI afslører de svagheder, virksomheder allerede har opbygget gennem års cloud-transformation, nye SaaS-løsninger og fragmenterede sikkerhedssystemer.
Jeg har lavet denne funktion, så den beregner fødselsdagen ud fra CPR-nr. Den benytter de officielle metoder til at beregne hvilket århundrede personen er født: Function FødselsdatoAfCPR(CPR As String) As Date 'CPR kan angives både MED og UDEN bindestreg
On Error Resume Next Dim TestSum As Long Dim Fødselsdato As Date Dim a As Integer, b As Integer, c As Integer, d As Integer, e As Integer, F As Integer, G As Integer, H As Integer, i As Integer, j As Integer Dim Aar As Integer, Mdr As Integer, Dag As Integer, Aarhundred As Integer
'Fjern evt bindestreg CPR = Replace(CPR, "-", "")
a = Mid(CPR, 1, 1) b = Mid(CPR, 2, 1) c = Mid(CPR, 3, 1) d = Mid(CPR, 4, 1) e = Mid(CPR, 5, 1) F = Mid(CPR, 6, 1) G = Mid(CPR, 7, 1) H = Mid(CPR, 8, 1) i = Mid(CPR, 9, 1) j = Mid(CPR, 10, 1)
TestSum = (4 * a + 3 * b + 2 * c + 7 * d + 6 * e + 5 * F + 4 * G + 3 * H + 2 * i + j) On Error GoTo Except 'dag = StrToInt(cpr[1]+Cpr[2]) Dag = Int(Mid(CPR, 1, 1) + Mid(CPR, 2, 1)) 'Mdr = StrToInt(cpr[3]+Cpr[4]) Mdr = Int(Mid(CPR, 3, 1) + Mid(CPR, 4, 1)) 'Aar = StrToint(cpr[5]+Cpr[6]) Aar = Int(Mid(CPR, 5, 1) + Mid(CPR, 6, 1)) Aarhundred = 0 Select Case G Case 0 To 3: Aarhundred = 1900 Case 4 Select Case Aar Case 0 To 36: Aarhundred = 1900 Case 37 To 99: Aarhundred = 2000 End Select Case 5 Select Case Aar Case 0 To 36: Aarhundred = 2000 Case 58 To 99: Aarhundred = 1800 End Select Case 6 Select Case Aar Case 0 To 36: Aarhundred = 2000 Case 58 To 99: Aarhundred = 1800 End Select Case 7 Select Case Aar Case 0 To 36: Aarhundred = 2000 Case 58 To 99: Aarhundred = 1800 End Select Case 8 Select Case Aar Case 0 To 36: Aarhundred = 2000 Case 58 To 99: Aarhundred = 1800 End Select Case 9 Select Case Aar Case 0 To 36: Aarhundred = 2000 Case 37 To 99: Aarhundred = 1900 End Select End Select FødselsdatoAfCPR = DateSerial(Aarhundred + Aar, Mdr, Dag) Exit Function Except: FødselsdatoAfCPR = False
End Function
Læg denne funktion i et modul og brug den til at beregne alderen i stedet for din datevalue
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.