#vba #ms-access-2016
Вопрос:
Я пытаюсь дублировать записи как в Основной форме, так и в подформе, используя код VBA. Источником записи основной формы "FMainForm"
является "tbl_Main_Data_Sheet"
то, что имеет шесть полей, таких как (ID, Date, News, Update, Customer_Name, Employee_Name)
. Вот "ID"
первичный ключ с номером Авто. И источником записи подформы "FTeam"
является "tbl_Team"
то, что также содержит шесть полей, таких как (TMID, Shop_Name, Staff_Name, Staff_Mood, Presence, RefID)
. Вот "TMID"
первичный ключ с автономером и RefID
связан с "ID"
оф "tbl_Main_Data_Sheet"
.
Я хочу создать дублирующую кнопку, которая скопирует текущую запись и вставит ее в качестве новой записи как в основной форме, так и в нескольких записях в подформе. Я получил приведенный ниже код с веб-сайта и применяю его. Он работает только для основной формы, но не работает для подформы. Может ли кто-нибудь помочь мне решить эту проблему. Я очень новичок в VBA.
Private Sub Command113_Click()
'On Error GoTo Err_Handler
'Purpose: Duplicate the main form record and related records in the subform.
Dim strSQL As String 'SQL statement.
Dim lngID As Long 'Primary key value of the new record.
'Save any edits first
If Me.Dirty Then
Me.Dirty = False
End If
'Make sure there is a record to duplicate.
If Me.NewRecord Then
MsgBox "Select the record to duplicate."
Else
'Duplicate the main record: add to form's clone.
With Me.RecordsetClone
.AddNew
!Employee_Name = Me.Employee_Name
!Date = Me.Date
!Customer_Name = Me.Customer_Name
!News = Me. News
!Update = Me.Update
'etc for other fields.
.Update
'Save the primary key value, to use as the foreign key for the related records.
.Bookmark = .LastModified
lngID = !ID
'Duplicate the related records: append query.
If Me.Child119.Form.RecordsetClone.RecordCount > 0 Then
strSQL = "INSERT INTO [tbl_Team] ( TMID, Shop_Name, Staff_Name, Staff_Mood, Presence, RefID ) " amp; _
"SELECT " amp; lngID amp; " As NewTMID, Shop_Point, Staff_Name, Staff_Mood, Presence, RefID " amp; _
"FROM [tbl_Team] WHERE RefID = " amp; Me.ID amp; ";"
DBEngine(0)(0).Execute strSQL, dbFailOnError
Else
MsgBox "Main record duplicated, but there were no related records."
End If
'Display the new duplicate.
Me.Bookmark = .LastModified
End With
End If
Exit_Handler:
Exit Sub
Err_Handler:
MsgBox "Error " amp; Err.Number amp; " - " amp; Err.Description, , "cmdDupe_Click"
Resume Exit_Handler
End Sub