Answered by:
VBA code to copy record

Question
-
Hi All
Due to structure data is the same. So I just update first record when the form is opened then I would like to use copy command to copy it for new record. we only need change Line for register. The copy will perform 2 task copy and update on below form. But when i build code it can not execute duplicate data. these duplicated records have the same data except primary key. and finally it operates incorrectly.
Here is my VBA code:
Private Sub CmdNew_Click() On Error GoTo Err_cmdDuplicate_Click DoCmd.RunCommand acCmdSelectRecord DoCmd.RunCommand acCmdCopy DoCmd.RunCommand acCmdRecordsGoToNew DoCmd.RunCommand acCmdSelectRecord DoCmd.RunCommand acCmdPaste Exit_cmdDuplicate_Click: Exit Sub Err_cmdDuplicate_Click: MsgBox Err.Description Resume Exit_cmdDuplicate_Click Me.Refresh End Sub
here is error when click on Copy
Friday, June 8, 2018 6:43 AM
Answers
-
I uploaded my version here: https://1drv.ms/u/s!AnmKsZFxs8_Kh6hQzfbC2w4rP2pKXA
I added a subform to select which lines you want to include, and the Production Date etc. controls are all unbound.
-Tom. Microsoft Access MVP
- Marked as answer by Nghi Trinh Saturday, June 9, 2018 5:04 PM
Saturday, June 9, 2018 4:13 PM -
Search for "access how to set multicolumn unique index" and you will find out.
-Tom. Microsoft Access MVP
- Marked as answer by Nghi Trinh Saturday, June 23, 2018 3:26 PM
Saturday, June 23, 2018 3:04 AM
All replies
-
It appears as if you have a SET of records AL07 through 16 and want to copy all of them to the next day.
Then why not do that with one append query? Off the cuff it would be something like:
insert into myTable(Line, ProductionDate, Group, Shift, …)
select Line, maxdate+1, Group, Shift, …
from myTable
where ProductionDate = maxdateYou can replace maxdate by a DMax function call - see help file
This will create the entire set of records for the next day.
-Tom. Microsoft Access MVP
Friday, June 8, 2018 1:25 PM -
Hi,
Another option is to set the default value for the new record based on the record you just entered. For example, in the AfterUpdate event of ProductionDate, you could try something like:
Me.ProductionDate.DefaultValue = """" & Me.ProductionDate & """"
Hope it helps...
Friday, June 8, 2018 2:38 PM -
Hi Guy
I already tried but it appear fault when i click Save with below code:
Private Sub Command90_Click() DoCmd.Save Me.Refresh Me!FrmSubHeaderInput.SetFocus DoCmd.GoToRecord acActiveDataObject, , acNewRec End Sub
And i already set default Value for all field like Line, ProdDate, Group, Shift.. as your instruction. It can not copy or default value by last record. Help me check
Friday, June 8, 2018 5:39 PM -
Hi,
Can you share a sample copy of your database with test data?
Friday, June 8, 2018 5:48 PM -
Thank Tom. If i have total different Lines need to register with same production date, group, shift...How can I do it one time or line by line.Saturday, June 9, 2018 1:11 AM
-
Hi Guys
Here is my DB. One time i want to register all 12 lines in the same day, same group and same shift. only different line. so i want a smart way to do that for end users. If not they must input 12 times, even more if we have more running line.
https://drive.google.com/open?id=1XP_k9mw85CanosGc6J5g3KS5SoIxaISm
Thank you in advance
Click here- Edited by Nghi Trinh Saturday, June 9, 2018 1:33 AM
Saturday, June 9, 2018 1:32 AM -
I'm looking at your database and I have some questions.
1. You wrote " i want to register all 12 lines in the same day", but there are only 11 records in Tblline.
2. The bottom subform has a recordsource of "select top 9 ...". Why 9 if your objective is to insert 11 or 12 records?
3. Both subforms are bound to the same TblHeader, as is the parent form. Why?
-Tom. Microsoft Access MVP
Saturday, June 9, 2018 3:25 PM -
Hi Tom
1. I expect user will register enough line. But this case i just give you example. number of record is not important. the point is how to perform as my expectation.
2. Select top 9 that means i just want to show 9 newest records. this number is not fix. i can adjust base on number of LINE.
3. 2 Subforms have different function. one for input and one for update data when one new record is registered
Saturday, June 9, 2018 4:00 PM -
Thanks, that's fine. Stand by; I will have something for you shortly.
-Tom. Microsoft Access MVP
Saturday, June 9, 2018 4:04 PM -
I uploaded my version here: https://1drv.ms/u/s!AnmKsZFxs8_Kh6hQzfbC2w4rP2pKXA
I added a subform to select which lines you want to include, and the Production Date etc. controls are all unbound.
-Tom. Microsoft Access MVP
- Marked as answer by Nghi Trinh Saturday, June 9, 2018 5:04 PM
Saturday, June 9, 2018 4:13 PM -
Thank you so much. it is great :)
- Edited by Nghi Trinh Saturday, June 9, 2018 5:07 PM
Saturday, June 9, 2018 5:04 PM -
Hello Tom
Give me one more question. In case some one submit twice time or more. The record will duplicate unnecessary. So how can prevent this issue. I wanna alert for user when record is duplicated and not allow to save them. I am looking forward to hearing your help. Thank in advance
Best regards
Nghi
Thursday, June 21, 2018 9:12 AM -
You prevent duplication by having a unique index on the combination of fields in the table that logically cannot be duplicated. Then the db engine will refuse to add the second row, and a runtime error will occur which you can trap and tell the user not to do that.
-Tom. Microsoft Access MVP
Thursday, June 21, 2018 2:19 PM -
Hi Tom
How I can set a unique index on the combination of fields. I already tested but is is not OK. We can not change setting because some fields is duplicate. You can see the above data: production date, shift and group is the same, only different line. But when we change shift then Line and production date is repeated again...
Friday, June 22, 2018 7:34 AM -
Search for "access how to set multicolumn unique index" and you will find out.
-Tom. Microsoft Access MVP
- Marked as answer by Nghi Trinh Saturday, June 23, 2018 3:26 PM
Saturday, June 23, 2018 3:04 AM -
I got it. Thank Tom so much :)Saturday, June 23, 2018 3:25 PM