Ich habe eine größere Datenbank mit Adressen (ca. 5000). In einem Datenbankfeld steht das Alter.
Jetzt möchte ich mit einer Abfrage nachschauen, wieviele jünger als 30 sind, wieviele zwischen 30-39, 40-49,50-59 und 60 Jahre und mehr.
Hatte das Prob auch, anstatt mir jetzt das Hirn zu verrenken und eine irre if-Verschachtelung oder choose-Verschachtelung aufzubauen, habe ich einfach beim Öffnen des Reps folgenden Code angelegt:
Private Sub Report_Open(Cancel As Integer)
Dim db As DATABASE
Dim RS As Recordset, rsStruktur As Recordset
Set db = CurrentDb()
Set RS = db.OpenRecordset(„SELECT DateDiff(‚yyyy‘,[Geburtstag],Date()) AS [Alter] FROM Mitarbeiter WHERE (((IsDate([Geburtstag]))=True));“, DB_READONLY)
DoCmd.RunSQL „UPDATE Altersstruktur SET Altersstruktur.Anzahl = 0;“
Set rsStruktur = db.OpenRecordset(„Altersstruktur“, dbOpenDynaset)
RS.MoveFirst
BeginTrans
Do
Select Case RS!Alter
Case 20 To 29
rsStruktur.FindFirst „AltersstrukturID=1“
rsStruktur.Edit
rsStruktur!Anzahl = rsStruktur!Anzahl + 1
rsStruktur.Update
Case 30 To 39
rsStruktur.FindFirst „AltersstrukturID=2“
rsStruktur.Edit
rsStruktur!Anzahl = rsStruktur!Anzahl + 1
rsStruktur.Update
Case 40 To 49
rsStruktur.FindFirst „AltersstrukturID=3“
rsStruktur.Edit
rsStruktur!Anzahl = rsStruktur!Anzahl + 1
rsStruktur.Update
Case 50 To 59
rsStruktur.FindFirst „AltersstrukturID=4“
rsStruktur.Edit
rsStruktur!Anzahl = rsStruktur!Anzahl + 1
rsStruktur.Update
Case 60 To 100
rsStruktur.FindFirst „AltersstrukturID=5“
rsStruktur.Edit
rsStruktur!Anzahl = rsStruktur!Anzahl + 1
rsStruktur.Update
End Select
RS.MoveNext
Loop Until RS.EOF
CommitTrans
Set rsStruktur = Nothing
Set RS = Nothing
Set db = Nothing
End Sub
Kannst das ja jetzt noch ausbauen.
CU
Alex
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Noch ne Idee:
Erstell eine Abfrage als Basis:
SELECT DateDiff(„yyyy“,[Geburtstag],Date()) AS [Alter], Count(DateDiff(„yyyy“,[Geburtstag],Date())) AS AnzahlvonAlter
FROM Mitarbeiter
WHERE (((IsDate([Geburtstag]))=True))
GROUP BY DateDiff(„yyyy“,[Geburtstag],Date());
Wenn die den Namen „AlterBasis“ hat, dann liefert Dir folgende Abfrage das gewünschte Ergebnis:
SELECT Left([Alter],1) & „0-“ & Left([alter],1)+1 & „0“ AS Altersgruppe, Sum(AlterBasis.AnzahlvonAlter) AS [Summe von AnzahlvonAlter]
FROM AlterBasis
GROUP BY Left([Alter],1), Left([Alter],1) & „0-“ & Left([alter],1)+1 & „0“;
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
nimm den aabfrageassistenten und definiere neu efelder in den die bedingungen wie folgt eingestellt sind:
funktion = anzahl oder count
bedingung = >19 AND [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]