Function f_lfd_anzahl(grp_feld As String) As Integer '*********************************************************************************** 'Autor: Heiko Hommes 'Datum: 21.03.2006 'Beschr: Diese Funktion bildet einen laufende Anzahl pro Gruppierung ' !!Wichtig ist jedoch, das das Gruppierungsfeld in der Abfrage sortiert ist 'Aufruf: In einer Abfrage f_lfd_anzahl([FELD_GRUPPIERUNG]) 'Rückgabe: laufende anzahl '************************************************************************************ On Error GoTo fehler Dim db As Database Dim rs_check As Recordset Dim lfdnr As Long Dim tab_da As Integer Dim ds_da As Integer lfdnr = 0 tab_da = 0 '0 tabelle ist da 1 Tabelle ist noch nicht angelegt ds_da = 0 '0 tabelle ist schon gefüllt 1 Tabelle ist noch leer Set db = DBEngine(0)(0) Set rs_check = db.OpenRecordset("tmp_grp_123456") If tab_da = 1 Then db.Execute "create table tmp_grp_123456 (fgrp text , flfd integer);" Set rs_check = db.OpenRecordset("tmp_grp_123456") End If rs_check.MoveFirst If ds_da = 0 Then If grp_feld = rs_check![fgrp] Then rs_check.Edit lfdnr = rs_check![flfd] + 1 rs_check![flfd] = lfdnr rs_check.Update Else rs_check.Edit rs_check![fgrp] = grp_feld lfdnr = 1 rs_check![flfd] = 1 rs_check.Update End If Else rs_check.AddNew rs_check![fgrp] = grp_feld rs_check![flfd] = 1 rs_check.Update End If f_lfd_anzahl = lfdnr Exit Function fehler: If Err.Number = 3078 Then tab_da = 1 Resume Next ElseIf Err.Number = 3021 Then ds_da = 1 Resume Next Else msgbox (Err.Description) End If End Function