Solved

Creating a new ID in VBA

Posted on 2008-06-17
6
456 Views
Last Modified: 2013-11-28
Hello,

I'm trying to create a new ID for any additional records we add into our database. I started out by creating an entry form that (all unbound text boxes) with 2 buttons one which I will append the fields to the table and one to fetch the current max id +1 for this record. the ID button is not working and I've tried different variations. We have 2 tables one which permanent and is a SQL table (linked to MS SQL) and the other a temprary table, both of which have IDs. I'm trying to pull that max number ID and 1 to it and assign it to a variable where I can send the value to a text box on the form. below is my code, what am I doing wrong?
Private Sub cmdGetNewID_Click()

'Get new ID for respondent
 

    Dim intPID As Integer

    Dim db As Database

    Dim rst As Recordset

    

    Set db = CurrentDb()

    

    'check which contact type it will be

    'If radio button 1 is selected then Phys table (Permanent)

    'If radio button 2 is selected then Temp table (Temprary)

    Select Case Me.frmContactType.Value

        Case 1

            Set rst = CurrentDb.OpenRecordset("SELECT Max(tblPhysContactInfo.ID)+1 AS [NewPID] FROM tblPhysContactInfo;")

            If Not rst.EOF Then

                rst.MoveFirst

                intPID = rst![NewPID]

            End If

        Case 2

            Set rst = CurrentDb.OpenRecordset("SELECT IIf(Max([tblTempContactInfo].[ID])+1=1,'2000001',Max([tblTempContactInfo].[ID])+1) AS [NewPID] FROM tblTempContactInfo;")

            If Not rst.EOF Then

                rst.MoveFirst

                intPID = rst![NewPID]

            End If

    End Select

    

    Me.txtPID.Value = intPID

End Sub

Open in new window

0
Comment
Question by:AIdoHSG
  • 3
  • 2
6 Comments
 
LVL 27

Expert Comment

by:MikeToole
ID: 21803312
Why not set the ID column your tables to automatically increment?
Use the IDENTITY keyword in SQL Server.
0
 
LVL 119

Expert Comment

by:Rey Obrero
ID: 21803316
try this


Private Sub cmdGetNewID_Click()
'Get new ID for respondent
 
    Dim intPID As Integer
    Dim db As Database
    Dim rst As Recordset
   
    Set db = CurrentDb()
   
    'check which contact type it will be
    'If radio button 1 is selected then Phys table (Permanent)
    'If radio button 2 is selected then Temp table (Temprary)
    Select Case Me.frmContactType.Value
        Case 1
'            Set rst = CurrentDb.OpenRecordset("SELECT Max(tblPhysContactInfo.ID)+1 AS [NewPID] FROM tblPhysContactInfo;")
'            If Not rst.EOF Then
'                rst.MoveFirst
'                intPID = rst![NewPID]
'            End If

            intPID = Nz(DMax("ID", "tblPhysContactInfo"), 0) + 1

        Case 2
'            Set rst = CurrentDb.OpenRecordset("SELECT IIf(Max([tblTempContactInfo].[ID])+1=1,'2000001',Max([tblTempContactInfo].[ID])+1) AS [NewPID] FROM tblTempContactInfo;")
'            If Not rst.EOF Then
'                rst.MoveFirst
'                intPID = rst![NewPID]
'            End If
   
            intPID = Nz(DMax("ID", "tblTempContactInfo"), 0) + 1
   
   
    End Select
   
    Me.txtPID.Value = intPID
End Sub


0
 
LVL 119

Expert Comment

by:Rey Obrero
ID: 21803331
that is, if your db application is a single user, for multiuser you will used @@identity
0
Microsoft Certification Exam 74-409

Veeam® is happy to provide the Microsoft community with a study guide prepared by MVP and MCT, Orin Thomas. This guide will take you through each of the exam objectives, helping you to prepare for and pass the examination.

 

Author Comment

by:AIdoHSG
ID: 21803349
Thanks capricorn1, but when I clicked the button it gave me a Run-time error '6': Overflow
and it takes me to line 21 or 31 based on my selection.
Any ideas?
0
 
LVL 119

Accepted Solution

by:
Rey Obrero earned 500 total points
ID: 21803373
change this

       Dim intPID As Integer

to

     Dim intPID As Long
0
 

Author Closing Comment

by:AIdoHSG
ID: 31467967
Thanks capricorn1, this is excatly what I was looking.
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Overview: This article:       (a) explains one principle method to cross-reference invoice items in Quickbooks®       (b) explores the reasons one might need to cross-reference invoice items       (c) provides a sample process for creating a M…
This article explains all about SQL Server Piecemeal Restore with examples in step by step manner.
Basics of query design. Shows you how to construct a simple query by adding tables, perform joins, defining output columns, perform sorting, and apply criteria.
In Microsoft Access, when working with VBA, learn some techniques for writing readable and easily maintained code.

708 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

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now