Если я понимаю ваш вопрос, вам нужно сделать следующее:
- Добавить новую запись в форму1
- Нажмите кнопку на форме Form1, чтобы открыть форму Form2
- Когда открывается форма 2, она содержит информацию из формы 1
У меня есть процесс, который делает что-то похожее в моей базе данных, и мы так поступаем.
- У пользователей есть форма для ввода новых записей
- Они используют нажатие кнопки, чтобы опубликовать новые данные в таблице. Во время этого процесса я возвращаю первичный ключ к новой записи. Затем, в завершение процесса нажатия кнопки, я говорю ей открыть новую форму и заполнить ее первичным ключом, который я только что получил.
- Новая форма открывается с использованием PK для записи.
Мой код для нажатия кнопки в VBA:
Private Sub OK_Click()
Dim rst As DAO.Recordset
Dim rst1 As DAO.Recordset
Dim sqlStr As String
Dim RptID As Variant
Set rst = CurrentDb.OpenRecordset("tble_Investigations", dbOpenDynaset, dbSeeChanges)
' here you need to add each of your fields from the form
rst.AddNew
rst![Table.Column1] = Me![FormField1]
rst![Table.Column2] = Me![FormField2]
rst![Table.Column3] = Me![FormField3]
rst.Update
' my sql string to return the new ID of the record I just added
sqlStr = "Select Max([ID]) as [MaxOfID] from tble_Investigations;"
Set rst1 = CurrentDb.OpenRecordset(sqlStr, dbOpenDynaset, dbSeeChanges)
rst1.MoveFirst
RptID = rst1![MaxOfID]
'here we open the Form2 with the new id.
DoCmd.OpenForm "Frm_Details", acNormal, , "[ID]= " & RptID, acFormEdit, acWindowNormal
DoCmd.Close acForm, "Frm_New", acSaveYes
End Sub
EDIT:
Исходя из того, что вы говорите, звучит так, будто вы делаете следующее:
Private Sub OK_Click()
Dim rst As DAO.Recordset
Dim rst1 As DAO.Recordset
Dim sqlStr As String
Dim RptID As Variant
Set rst = CurrentDb.OpenRecordset("t_Evaluation", dbOpenDynaset, dbSeeChanges)
' here you need to add each of your fields from the form
rst.AddNew
rst![ExecutionLeadOrg] = Me![ExecutionLeadOrg] 'the field from your form that matches the table column
rst![TitleID] = Me![TitleID]
rst![t_Evaluation.EvalTypeID] = Me![t_Evaluation.EvalTypeID]
rst![SectionID] = Me![SectionID]
rst![LOBEvaluation] = Me![LOBEvaluation]
'you need to continue doing this for each field on your form
rst.Update
' my sql string to return the new ID of the record I just added
sqlStr = "Select Max([EvaluationID]) as [MaxOfID] from t_Evaluation;"
Set rst1 = CurrentDb.OpenRecordset(sqlStr, dbOpenDynaset, dbSeeChanges)
rst1.MoveFirst
RptID = rst1![MaxOfID]
'here we open the Form2 with the new id.
DoCmd.OpenForm "f_LOBevalPopUpEntry", acNormal, , "[EvaluationID]= " & RptID, acFormEdit, acWindowNormal
DoCmd.Close acForm, "F_EvalNew", acSaveYes
End Sub