I agree that reserved words should never be used for field names, but every new version of Access adds new reserved words that can break your application. Therefore, you need to adopt a best practice as far as naming your fields to be as specific as possible, i.e. instead of "Number" you might use "Order_Number" which avoids conflict with future Access versions, plus has the benefit of being self-documenting.
However, I think that autonumbers have their place, you just need to understand their limitations. In a financial app that might be audited, you should not use autonumbers because as Linq said you can have gaps - nothing riles an auditor more than gaps in a number sequence :-) In that case, I would suggest using a function to create a new record with the next sequential number, and then open the form filtered for that number. The function might look like this (this is old code, I wouldn't write it exactly this way today but it worked):
-
Function NextToolID(Customer)
-
' add the next sequential tool number
-
Dim db As Database, rst As Recordset, tmp As Long
-
Set db = CurrentDb
-
Set rst = db.OpenRecordset("tblHyTechToolLog")
-
rst.MoveLast
-
tmp = 1 + rst!fldHyTechToolCodeID
-
rst.AddNew
-
rst!fldHyTechToolCodeID = tmp
-
rst!fldCustomerID = Customer
-
rst.Update
-
rst.Close
-
Set rst = Nothing
-
Set db = Nothing
-
NextToolID = tmp
-
End Function
-
That's one way to handle unique numbering in a multiuser scenario.
However, if you have a batch process then autonumbers are OK. For example, let's say you have a membership database & each year you run an append query to create an invoice for every active member. Using an autonumber for the invoice number saves you some work, and you can safely show that number to the user.