D.S.:
Don't know your level of experience with VBA, but here is a solution I created for one of my databases that "autoincrements" a record id. It's based on a year (not month) but you should be able to modify as necessary to reset.
I created a single field/single record table to hold the value of the last used Record Number and reference that table in the procedure. The format of the ID is YYYYNNNN; example: 20010123.
The procedure is triggered when the Referral Date is entered and, as you can see, tests the value of the year part of the date (here is where you will need to modify the code) to reset for a new year.
Next, it reads the value from the table, increments it by one, stores the new value in the table and assigns the number to the Record ID.
Dim dbTemp As Database
Dim rsTemp As Recordset
Dim strSQL As String
Dim refdate As Date
Dim RefNum As String
strSQL = "SELECT BaseNum FROM tblBaseNum"
Set dbTemp = CurrentDb
Set rsTemp = dbTemp.OpenRecordset(strSQL)
If Val(DatePart("YYYY", refdate)) > Val(Left(rsTemp.Fields(0), 4)) Then
If MsgBox("WARNING You are about to reset the Referral Counter" & Chr(13) & Chr(13) _
& "Are you sure you want to do this?", vbOKCancel, "WARNING -- WARNING -- " _
& "WARNING -- WARNING"

= vbCancel Then
Exit Sub
Else
With rsTemp
.Edit
.Fields(0) = DatePart("YYYY", refdate) & "0000"
.Update
End With
End If
End If
'This takes the value stored in tblBaseNum (the last Referral Number used), increments it
'by one and assigns that value to the current Referral Record.
With rsTemp
.Edit
.Fields(0) = Val(.Fields(0)) + 1
.Update
End With
RefNum = rsTemp.Fields(0)
rsTemp.Close
Hope this helps. If you have any questions, feel free to ask.
Larry De Laruelle
larry1de@yahoo.com