Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

VB6 - reset ID AutoNumber field  in ms access table

Posted on 2012-12-29
8
Medium Priority
?
3,127 Views
Last Modified: 2012-12-29
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.Open
        con.Execute ("DELETE * From [TDM_Rate_form_no1] WHERE ID= " & ID_NUM.Text)
        con.Close

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

    Case vbNo

    End Select
End Sub

Open in new window

0
Comment
Question by:Wilder1626
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
  • 2
8 Comments
 
LVL 75
ID: 38729753
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>)
Example:
?mResetAutoNumber(500,3)

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.
0
 
LVL 11

Author Comment

by:Wilder1626
ID: 38729758
Hi DatabaseMX

Is this something i can do from my VB6 app?
0
 
LVL 75

Assisted Solution

by:DatabaseMX (Joe Anderson - Microsoft MVP, Access and Data Platform)
DatabaseMX (Joe Anderson - Microsoft MVP, Access and Data Platform) earned 800 total points
ID: 38729767
If you can run VBA code.  You might have to change

CurrentDb.Execute sSQL

to

DBEngine(0)(0),Execute sSQL

mx
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 29

Accepted Solution

by:
IrogSinta earned 1200 total points
ID: 38729769
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.
0
 
LVL 11

Author Closing Comment

by:Wilder1626
ID: 38729795
Hi all

IrogSinta, i hunerstand your point and it make sense.

I will leave it as is.

Thanks again for all your help
0
 
LVL 75
ID: 38729811
"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

mx
0
 
LVL 29

Expert Comment

by:IrogSinta
ID: 38729858
Cool explanation, mx.

:-)
0
 
LVL 11

Author Comment

by:Wilder1626
ID: 38729969
Thanks for the explanation DatabaseMX
0

Featured Post

[Webinar] Lessons on Recovering from Petya

Skyport is working hard to help customers recover from recent attacks, like the Petya worm. This work has brought to light some important lessons. New malware attacks like this can take down your entire environment. Learn from others mistakes on how to prevent Petya like worms.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Access developers frequently have requirements to interact with Excel (import from or output to) in their applications.  You might be able to accomplish this with the TransferSpreadsheet and OutputTo methods, but in this series of articles I will di…
Microsoft Access is a place to store data within tables and represent this stored data using multiple database objects such as in form of macros, forms, reports, etc. After a MS Access database is created there is need to improve the performance and…
What’s inside an Access Desktop Database. Will look at the basic interface, Navigation Pane (Database Container), Tables, Queries, Forms, Report, Macro’s, and VBA code.
Do you want to know how to make a graph with Microsoft Access? First, create a query with the data for the chart. Then make a blank form and add a chart control. This video also shows how to change what data is displayed on the graph as well as form…
Suggested Courses

609 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question