07. april 2008 - 15:20Der er
12 kommentarer og 2 løsninger
Beregne antal medlemmer ml. 10 og 12 år ved hjælp af cpr. nr.
Når jeg skal finde antal medlemmer over 18 år i en medlemsdatabase bruger jeg: "<18" i en forespørgsel under cpr. nr. Men hvordan finder jeg lige antal medlemmer mellem f.eks 10 år og 18 år i samme forespørgsel?
SELECT Count(tblMedlemmer.ALDER) AS Antal FROM tblMedlemmer WHERE (((tblMedlemmer.ALDER)>18)); UNION SELECT Count(tblMedlemmer.ALDER) AS Antal FROM tblMedlemmer WHERE (((tblMedlemmer.ALDER)Between 10 and 18));
En nem løsning er der ikke ( hvis du skal have beregnet alderen korrekt ), men her er måske noget modulkode der kan hjælpe :
Først skal du have denne modulkode
Public Function Alder(Dato As Date) As Integer If DateSerial(Year(Date), Month(Dato), Day(Dato)) > Date Then Alder = DateDiff("yyyy", Dato, Date) - 1 Else Alder = DateDiff("yyyy", Dato, Date) End If End Function
Jeg vil nok lave funktionen om til at bruge CPR som input
Public Function Alder(CPR As String) As Integer Dim Dato As Date Dato = CDate(Mid(CPR, 1, 2) & "/" & Mid(CPR, 3, 2) & "/" & Mid(CPR, 5, 2)) If DateSerial(Year(Date), Month(Dato), Day(Dato)) > Date Then Alder = DateDiff("yyyy", Dato, Date) - 1 Else Alder = DateDiff("yyyy", Dato, Date) End If End Function
så kunne en SQL se sådan ud
SELECT Medlemmer.Navn, Medlemmer.CPR, alder([CPR]) AS År FROM Medlemmer WHERE (((alder([CPR]))<18));
Hej Jensen363 & kabbak Takker for begge jeres forslag, som jeg desværre ikke kaster mig ud i på nuværende tidspunkt grundet tidspres. Jeg havde håbet på en nem og ikke tidskrævende løsning, men det var nok naivt. Jeg gemmer forslagene til et senere tidspunkt, og skal nok få det til at funke. Hvis det er ok med jer, deler jeg pointene mellem jer? Men det kræver vist et svar?
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.