When you delete the last record or records in a table or in
a form that has an AutoNumber field, and then you compact the database, the
AutoNumber field does not start at the next higher number when you add new
You have installed Microsoft Jet 4.0 Service Pack 4
(Msjet40.dll version 4.00.2927.4) or later.
Use one of the following two methods to work around this
Create a new table and append the existing records to the new
table. New records that are added to this table will start with an AutoNumber
value of one unless you set the increment value programmatically.Note
If you no longer need your records, you can also reset the
AutoNumber field by deleting all the records from the table, and then
compacting the database. However, if you use this method, you cannot get the
deleted records back.
To create a new table and append the existing
records to the new table in a Microsoft Access database (.mdb), follow these
- Click your table in the Database window.
CTRL + C.
CTRL + V.
- In the Paste Table As dialog box, click Structure Only, type the name tblNewTable, and then click
Microsoft Office Access 2003 or in Microsoft Access 2002, point to Database Objects on
the View menu,
and then double-click Create query in Design view.
Microsoft Office Access 2007, click the Create tab, and then
click Query Design in the Other group.
- In the Show Table dialog box, click the old table, click Add, and then click Close.
Access 2003 or in Access 2002, click Append Query on
the Query menu.
Access 2007, click Append
in the Query Type group on the Design tab.
- In the Append dialog box, click tblNewTable in the Table Name box, and then click OK.
- Add all the fields to the query design grid except the
Access 2003 or in Access 2002, on
the Query menu, click Run to append the records to your new table.
Access 2007, click Run in
the Results group on the Design tab to append the records to your new table.
- Open the tblNewTable table, and then add a
Note that the AutoNumber is next higher number.
You can use the following function in a Microsoft Access database
(.mdb) to programmatically reset the seed value of your AutoNumber field. You
can add the function to a module, and then run it in the Debug window. Or, you
can call the function from a command button or from a macro. Note
For this code to run correctly, you must reference both the
Microsoft ActiveX Data Objects 2.x and the Microsoft ADO Ext 2.x for DDL and
Security Libraries (where 2.x is 2.1 or later.) To do so, click
on the Tools
menu in the Visual
Basic Editor. Make sure that the Microsoft ActiveX Data Objects
and the Microsoft ADO Ext 2.x for DDL and Security
check boxes are selected.
Function ChangeSeed(strTbl As String, strCol As String, lngSeed As Long) As Boolean
'You must pass the following variables to this function.
'strTbl = Table containing autonumber field
'strCol = Name of the autonumber field
'lngSeed = Long integer value you want to use for next AutoNumber.
Dim cnn As ADODB.Connection
Dim cat As New ADOX.Catalog
Dim col As ADOX.Column
'Set connection and catalog to current database.
Set cnn = CurrentProject.Connection
cat.ActiveConnection = cnn
Set col = cat.Tables(strTbl).Columns(strCol)
col.Properties("Seed") = lngSeed
If col.Properties("seed") = lngSeed Then
ChangeSeed = True
ChangeSeed = False
Set col = Nothing
Set cat = Nothing
Set cnn = Nothing
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.
Steps to reproduce the problem
- Install Microsoft Jet 4.0 Service Pack 4 (SP4) or later.
For more information about how to obtain the latest Microsoft Jet service
pack, click the following article number to view the article in the Microsoft Knowledge Base:
How to obtain the latest service pack for the Microsoft Jet 4.0 Database Engine
Access 2003 or in Access 2002, create
a new database.
- Create the following table:
Field Name: ID
Data Type: AutoNumber
Field Name: MyText
Data Type: Text
Table Properties: tblExample
- Save the table as
- On the View Menu, click Datasheet View.
- Add 10 records to the table.
- Delete the last three records that you added to the
- Close the table.
- On the Tools menu, point to Database Utilities, and then click Compact and Repair Database.
- Open the tblExample table.
- Add a new record to the table.
Note that the
AutoNumber is 11 rather than 8, as you would expect.
After you compact the project in a Microsoft Access project
(.adp), you do see the number that you expect in the AutoNumber field when you
add the record. However, when you save the record, the AutoNumber changes. In
this example, you see 8 until the record is committed. Then, the number changes
to 11. This happens because the AutoNumber is assigned on the server after the
record is committed.
For more information, click the following article number to view the article in the Microsoft Knowledge Base:
Cannot change default seed and increment value in UI
Article ID: 287756 - Last Review: June 13, 2007 - Revision: 9.1
- Microsoft Office Access 2007
- Microsoft Office Access 2003
- Microsoft Access 2002 Standard Edition
|kbprogramming kbado kbupdateissue kbbug kbnofix KB287756|