• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 3271
  • Last Modified:

VB6 - reset ID AutoNumber field in ms access table

Hello all

I would like to reset the ID AutoNumber field from my MS Access table when i delete a record.

How can i do that?

Thanks again for your help

Full code
Private Sub delete_Click()
    Select Case MsgBox("Do you realy want to delete that record " & ID_NUM.Text & " ?", vbYesNo Or vbQuestion Or vbSystemModal Or vbDefaultButton1, "Delete...")

    Case vbYes

        Set con = New ADODB.Connection
        con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & link_for_base.Caption
        con.Execute ("DELETE * From [TDM_Rate_form_no1] WHERE ID= " & ID_NUM.Text)

        con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;;Data Source=" & link_for_base.Caption
        rs.Open "select * from TDM_Rate_form_no1", con, adOpenDynamic, adLockOptimistic
        Set MSHFlexGrid1.Recordset = rs

    Case vbNo

    End Select
End Sub

Open in new window

  • 3
  • 3
  • 2
2 Solutions
DatabaseMX (Joe Anderson - Microsoft Access MVP)Database ArchitectCommented:
From VBA code, you can do this - I assume you mean the AutoNumber:

** VBA Code method - Example**
Place this code in a standard module. Do not name the module the same as the Function below.

Public Function mResetAutoNumber(lStartVal As Long, lIncrement As Long) As String
   'Example: Set the Starting Value and Increment for a table named Table1ANTest and an AutoNumber field called AutoNum
    Dim sSQL As String
    sSQL = "ALTER TABLE [Table1ANTest] ALTER COLUMN [AutoNum] COUNTER (" & lStartVal & ", " & lIncrement & ");"
    CurrentDb.Execute sSQL
    mResetAutoNumber = "Auto Number has been re-numbered"
End Function

The first number (lStartVal) is the starting value, and the second (lIncrement) is the increment.
The example above will start the Auto Number at 1000 and increment by 50.

To run the code one time, open the VBA Immediate Window, and type
this line (including the question mark, followed by Enter:

?mResetAutoNumber(<YourStartValueNumber>, <YourIncrementNumber>)

You can run this against an empty existing table, or to modify the *next higher* Auto Number value and increment.
It will *not* change any existing auto number values.

This works for A2K and later.
Wilder1626Author Commented:
Hi DatabaseMX

Is this something i can do from my VB6 app?
DatabaseMX (Joe Anderson - Microsoft Access MVP)Database ArchitectCommented:
If you can run VBA code.  You might have to change

CurrentDb.Execute sSQL


DBEngine(0)(0),Execute sSQL

Easily Design & Build Your Next Website

Squarespace’s all-in-one platform gives you everything you need to express yourself creatively online, whether it is with a domain, website, or online store. Get started with your free trial today, and when ready, take 10% off your first purchase with offer code 'EXPERTS'.

What is your purpose for reseting the autonumber field.  This is usually used as a primary key to uniquely identify each record.  This would cause problems if this table is related to another table using this key.  Where you thinking that you would run out of numbers for this field.  An autonumber field with a data type of Long can go up to over 2 billion.
Wilder1626Author Commented:
Hi all

IrogSinta, i hunerstand your point and it make sense.

I will leave it as is.

Thanks again for all your help
DatabaseMX (Joe Anderson - Microsoft Access MVP)Database ArchitectCommented:
"An autonumber field with a data type of Long can go up to over 2 billion. "
Actually ... that's not quite accurate - since we're now on that subject:

An Auto Number (Long Integer) will increment from 1 to 2,147,483,647, then jump to -2,147,483,648, and then
count up to 0. Adding one record a second, 24/7 with no holidays, you can add
records for a bit over 136 years before hitting the limit.

3600 sec/hour * 24 hour/day * 365 days/year = 31,536,000 seconds/year
2,147,483,647 + 2,147,483,648 + 1 = 4,294,967,296 auto numbers

1 year                    1 Sec               4,294,967,296 auto numbers      = 136 YEARS !
-----------------  *  ------------  * ------------------------
31,536,000 seconds      Auto Number

AN                 SomeField

-2147483648      5
-2147483647      6
-2147483645      2
-2147483646      3
-2147483647      4
-4                    a
-3                   b
-2                   c
-1                  d
0                  e
1                  x
2                    z

Cool explanation, mx.

Wilder1626Author Commented:
Thanks for the explanation DatabaseMX
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get 10% Off Your First Squarespace Website

Ready to showcase your work, publish content or promote your business online? With Squarespace’s award-winning templates and 24/7 customer service, getting started is simple. Head to Squarespace.com and use offer code ‘EXPERTS’ to get 10% off your first purchase.

  • 3
  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now