Ok, here's a shot at Bill's and Sbohman's ideas, taking it all the way to a reset in the invoice # when the year rolls over.
Given: Current form/recordset has a field called "INumber" (which should be the Invoice Number in this format: 2002-0195, 2002-0196...)
Create 2 new tables:
tblDateLastReset
Field: fldDate
the only record in that table: "01-01-2002"
tblInvoiceNumber
Field: fldNumber
the only record in that table: "0"
Private Sub INumber_Enter()
Dim rsta As Recordset
Dim rstb As Recordset
Dim DateNow
Dim strYear As String
Dim i As Long
Set rsta = CurrentDb.OpenRecordset("tblDateLastReset", dbOpenDynaset)
Set rstb = CurrentDb.OpenRecordset("tblInvoiceNumber", dbOpenDynaset)
DateNow = Date
strYear = Right(DatePart("yyyy", Now()), 4)
If IsNull(INumber.Value) Then
If DateNow > rsta![fldDate] + 365 Then
rsta![fldDate] = rsta![fldDate] + 365
rstb![fldNumber] = 0
Else
End If
Me![INumber] = strYear & "-" & DMax "[fldNumber]", "tblInvoiceNumber"

+ 1
rstb![fldNumber] = rstb![fldNumber] + 1
Else
End If
End Sub
This code does NOT work...but I think I'm close. It hangs on the 4th to last line (rstb!...) where error says:"Update or Cancel Update without AddNew or Edit"
Can someone jump in and help??!!