Wilder1626
asked on
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
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
ASKER
Hi DatabaseMX
Is this something i can do from my VB6 app?
Is this something i can do from my VB6 app?
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Hi all
IrogSinta, i hunerstand your point and it make sense.
I will leave it as is.
Thanks again for all your help
IrogSinta, i hunerstand your point and it make sense.
I will leave it as is.
Thanks again for all your help
"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
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
Cool explanation, mx.
:-)
:-)
ASKER
Thanks for the explanation DatabaseMX
** 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
'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(<YourSta
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.