بسیای از دوستان احتمالا برای راحتی کار جهت فیلدهای ID یا شناسه جداول از دیتاتایپ AutoNumber استفاده می کنند . درحالی که از شماره های جاافتاده که ایجاد می شوند ناراضی هستند روشی که اکثر کاربران استفاده می کنند نوشتن حداکثر چند خط کد واستفاده از یک خط برای درج مقدار ID جدید است
کافیست در روال Form_Current مانند زیر عمل کنید
Private Sub Form_Current()
If IsNull(MyIDField) Then
MyIDField = NewID(Me.RecordSource)
End If
End Sub
تابع NewID را در یک ماژول کپی کنید وهرزمان رکورد جدیدی ایجاد می شود آنرا صدا بزنید .اگر اولین فیلد جدولتان همان ID آن است به آرگومان دوم نیاز نیست ولی درغیر اینصورت شماره فیلد در جدول(اینکه فیلد موردنظر چندمین فیلد درجدول است)که از صفر شروع می شود الزامی است
Public Function NewID(TableName As String, Optional FieldIdx As Integer = 0) As Long
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset(TableName)
If rs.RecordCount Then
rs.MoveLast
NewID = CLng(rs.Fields(FieldIdx).Value) + 1
Else
NewID = 1
End If
rs.Close
Set rs = Nothing
'************************************************* *******
'NewID = Nz(DMax("ID", TableName), 0) + 1
'************************************************* ********
End Function
لازم به ذکر است که خودم تمام فیلدهای شناسه جداول را ID نامگذاری کرده ام و از کد میان ستاره ها استفاده میکنم