Modules & VBA :: Duplicating Record With Autonumber Field
May 23, 2015
I am wanting to create a new record in a table copying the majority of the data from another record in the table. I am using the following code which creates new records but the data isn't being copied.
This is the section of code:-
' Return Control object variable pointing to list box.
Set ctlList = Me!lbStudents
' Enumerate through selected items.
For Each varItem In ctlList.ItemsSelected
' Get the info to get the enrolment record
intClientID = Me.lbStudents.Column(7, varItem)
I wanted to get the autonumber ID before a record was saved to the table. My fields are on a form that is linked to the table. Maybe my solution is not the most elegant but it seems to work.
I messed around and came up with this solution: it creates the next record and captures the autoID then increments it and creates the record we will actually use. Since we know the current autoID we know 100% the next will be the current+1
Code:
' Code by Witchcraftz ' Button event to add new record Private Sub cmdAddRecord_Click() Dim strID As String
We need to reset the autonumber after the last record is deleted.
For example: 2006 2007 2008
if 2008 gets deleted, we want the autonumber to reset back to 2008 rather than move to 2009.
Is this possible? This is the code we are using but cannot get the string to recognize the variable. If the variable is replaced with a number, it works, but it defeats the purpose of adding the plus 1 to the last autonumber.
Code: Private Sub Command0_Click() Dim RLMax As Integer Dim Statement As String RLMax = DMax("[id]", "Table1") RLMax = RLMax + 1
strSQL = "Alter table table1 Alter Column Id Autoincrement(RLMax,1)" DoCmd.RunSQL strSQL End Sub
I realize we don't want to depend on the autonumber for anything other than a row identifier, but the table is setup that it is important for the rows to be sequential if the last record is deleted. Only if the last record is deleted.
So, I have a table with an autonumbered key field. I started the autonumbering at 1000 thinking that I may want to manually backfill some old records at a later date. Now I’m stuck.
Is there a way I can insert a new record into this table, filling this field as “950” for example?
I have a Microsoft Access database with SQL Server backend with 10000 records in my table, I have a autonumber field and in my database the purpose of the autonumber field is just to keep the record sequence (not to treat as a unique identifier) and I don't want to use a number field to manually enter the sequence. Whenever the record is deleted or the user won't save the record, it put gaps in the record sequence, Is there any way to refresh the autonumbers automatically "After delete confirm" event or "After Insert/update" even.
I have a table with an autonumber field, which of course is indexed with no duplicates. Twice in recent days it has attempted to add a record with an autonumber that is not the high number - it is about 20 numbers below the high number. So we get a 'can't add this record' error.
I can fix this by copying the table to a temporary table and then copying it it back. Then the autonumber works correctly.
What can I do to prevent this? By the way we updated to Access 2010 a couple of weeks ago, but the data is still Access 2003. We are reluctant to update the data yet in case it causes more problems.
I'm hoping this is quite easy as I'm new to Access.
I have a record similar to the below
recordID: 1 animals: cats breed: persian number: 3 price: £50 each
What I would like to do is dupicate the above data three times, changing the field in "number" to show as 1 on each occassion...so, theoretically, the data will be exactly the same in each new record except for recordID....
e.g recordID: 2 animals: cats breed: persian number: 1 price: £50 each
recordID: 3 animals: cats breed: persian number: 1 price: £50 each
recordID: 4 animals: cats breed: persian number: 1 price: £50 each
In trying to respond to another thread, I have run into something that is confounding me (or maybe I'm just getting dense).
We have a subform. One field has an event on DblClick to launch a search form. When the user identifies the target, he/she clicks a button on the subform. This pushes the appropriate value into a field on the original subform using VBA code and closes the search form. This all works fine.
The behaviour that is driving me bugging is when the user clicks on a new record (i.e. new line) on the subform, we would like to automatically generate the next record (E.g. when you type in a field of a record with autonumber in datasheet mode, Access automatically generates the next record). Currently this doesn't happen - Access generates the PK for the record being modified, but doesn't generate the view of the next record.
What really confuses me is that I have created similar looking example in which this works just fine. I can't figure out which of the differences between the two samples is causing this behaving.
Also, typing information into the field on the subform does cause the next record to be generated. It is just doing this via code that works in one case but not another.
I have narrowed it down to the actual subform. Even as a standalone form the form exhibits the same behaviour.
For reference, the original thread is http://www.access-programmers.co.uk/forums/showthread.php?t=99457
When I tried paste some data using front end to my database, Access showed error (can't create record because data would be duplicated). I thought it's impossible because it is autonumber field. So I checked it (manually). I did copy of my database and then for testing, I created record. I was shocked. Next record should has a value of "160" but Access gave "130" then showed an error "Can't create record because data will be duplicated". Of course after compact and repair everything is fine.
I want to be able to make an exact copy of an existing record in a table and then change the value of a couple of the fields before writing it to the table as a new record.
What is the best way to go about this? I guess it is possible with select, update and append queries but I'd rather do it in code.
It sounds like it should be a simple and commonly performed exercise but I can't find anything on it.
I have a table that contains financial data on projects. Each project has one record consisting of numerous fields.
I want users to be able to archive off copies of these records at certain points in time so I can track the financial data - a bit like storing different versions or issues.
On any one day I want users to be able to access the live record and review the archive.
Question : Is there a simple way of duplicating a record in a table ?
At the moment I am using a form by copying all of the field values from this form, moving to a new record, writing the field values back to the form hence creating a copy. This seems somewhat laborious.
Can't I access the table directly somehow and simply cut and paste ?
Also, is there a simple way to check for a duplicate record before cloning the record i.e. if the data has already been archived once don't do it again.
Ok I haven't worked on access for a while and so my knowledge of my own database is a little poor. But I have a button on one of my forms which duplicates records. The problem is, not only does it duplicate the record but it also creates a blank record. Is there something i can put in the command for the button that will delete records that are completely null?
Many fields of other records are also null so I only want to delete records that have null in all their fields, or better yet just stop creating these blank records.
I have a form with a job number textbox. I want to be able to edit the current record on screen by changing the job number and then save (duplicate) the record i.e. create a new record with the new job number without saving the old record I was editing. How do I do this? I tried the duplicate record command button but it saves the old record with the changed job number as well as duplicating it. :confused:
I created a table in a budget database without a autonumber field. I then inserted a autonumber field after creating the form by inserting a row in the table which works fine in the table, now i want to use a text box on the form with BudgetID from the autonumber field to give me the total amount of records in the database but the autonumber field is not in the record source dropdown.
I created a button in a form that duplicates the record so our employees can fill in the form more quickly.
I know I am being greedy, but is there someway to change the VBC so I only duplicate certain fields in a record, not all of them?
I have attached a (.jpg) of the Duplicate record code that is automatically created by Access when you use the "Duplicate record" option when making up a button on a form. I have attached a 2nd (.jpg) which shows the (7) fields I want to duplicate, out of the (20) available fields for each record.
Is it possible to duplicate a record with selected fields, to be copied into a new record. ie if there are 10 fields, i only need 8 of them (no need for timestamp field etc form existing record).
Help!!! I am setting up a database with 'open' and 'close' dates of an event for each record/ID. I want to be able to sort/query my results into the next event (i.e. open or close) as it will be happening so that I can plan for each event, but I am not sure how to go about doing this. I have tried various queries but because the information is linked to one ID it does not want to duplicate the information in the record. I can set up separate queries for the 'open' and 'close' dates but I can't seem to be able to tie it together =>I have 2 queries, but I really need it to be at least in one report in date order each record appearing twice ...once at the open date, once at the closing date. anyone....please!!!!!!! :) thank u
I have two tables linked to each other in one to many relationship. Instead of auto number, the date and shift (Text) is being used as the primary keys (Composite Primary Key). Here is the tables structures,
The tables Payouts and Bills has one to many relationship. One payout row can have many bills. The problem is that I want to start the Autonumber in bills table everyday from 1. As date and shift are different for every day so even if i start bills from 1 everyday, it wont make same primary key. I can do it manually but I want to make it automatically.
In my database scenario, a patient would see a doctor and the doctor would check off fields in a form representing different disease symptoms that the patient has to calculate a final score (for ex. if the patient has 2 symptoms, the final score would be 2).
After a few months, the patient would visit the doctor again, and the doctor will have to fill out the same form, adding any new symptoms the patient might now have. I would like to have the disease symptom fields checked off in the previous visit automatically show up in the new form, so that the doctor only has to add the new symptoms, and then recalculate the score using both the old and new data (for ex., if the patient had 2 symptoms before and 3 more symptoms now, the score would be 5).
I have a navigation form that has a tabbed form on one of its tabs. The tabbed form has a 'current client' query record source and allows one to choose from a list of current clients and when a client is selected - details relating to client are displayed on various tabs on tabbed form.
I want to duplicate tabbed form and change record source to a query selecting 'exited clients' so I can see same information but for exited clients.
I have created a new tab on navigation form for my new exited clients tabbed form and changed record source by creating a new exited client query but when I change record source on exited client tabbed form it automatically changes record source of current client tabbed form to the exited client query and visa versa.
First off a big thank you to this forum... have solved a lot of questions I have had and some I never knew I had. Keep in mind this is all from a non-programmer so my question(s) might not be technically sound.
The issue I have is I have built a database to track documents that we process. It is uses an autonumber and that has worked great. The issue is eventually this document gets processed in our accounting system and I want to retrieve data from there and add it to the document record.
I figured out how to like the ODBC database and that worked, but I get an expression error. The field in the ODBC database is text and in Access it is an Autonumber.
Is there a way to copy the autonumber field and change it to text property to align with the other database?
I have a form that has two date combo boxes. I would like to have one of the combo boxes populate by itself with the same value the user enters in the other combo box. How do I do this?
I have a form with a duplicate record button.Sometimes when duplicating a record the duplicate is created but the form remains in edit mode (small pencil in the form margin).I also have a manual record counter on the form which does not refresh to the newest record number following the duplication? Both issues happen together and not independently.
I now have the standard MS Access record counter visible on the form to see whats happening and this always jumps correctly to a new record number when duplication is triggered, so when the problem happens the MS Access counter is showing one more than my own record counter.
If I use the standard MS Access record navigation buttons and go back and then forward by one record, the duplicated record is then corrected. The edit mode pencil is gone and both record counters read the same, which I assume has happened this has forced a save to happen
If Me.Dirty Then Me.Dirty = False End If
- in the current event of the form, would solve the problem, but it doesnt make any difference at all, its still no better, or no worse than before?Using CTRL + S removes the pencil, but doesn't correct my bespoke record counter?