我尝试在单击按钮打开第二个表单后,将表单1上的字段ReportID(这是一个数字字段)中的值传递给名为Budget_fsub的表单上的字段ReportID。我已经尝试过这个代码将值传递给第二个表单,看起来它可以正常工作,但是当我转到保存第二个表单值的表时,该值尚未记录。我做错了什么?
使用按钮打开form2的Form1:
Private Sub cmdEnterBudgetInfo_Click()
On Error GoTo Err_EnterBudgetInfo_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Budget_fsub"
DoCmd.OpenForm stDocName, , , , acFormAdd, , Me![ReportID]
Exit_cmdEnterBudgetInfo_Click
Exit Sub
Err_EnterBudgetInfo_Click:
MsgBox Err.Description
Resume Exit_cmdEnterBudgetInfo_Click
End Sub
以下是Budget_fsub表单上的代码:
Private Sub Form_Open(Cancel As Integer)
Dim defaultID As Long
defaultID = CLng(Nz(Me.OpenArgs, 0))
If defaultID = 0 Or IsNull(Me.OpenArgs) Then
Cancel = True
Exit Sub
End If
Me.ReportID.DefaultValue = defaultID
End Sub
答案 0 :(得分:0)
所以,这是一个有效的解决方案。我假设您已绑定表单,并且ReportID文本框已绑定到该列。请注意,我从未喜欢使用宏来操纵数据..
以下是Form1的代码:
Private Sub cmdEnterBudgetInfo_Click()
On Error GoTo Err_EnterBudgetInfo_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Budget_fsub"
'close the form first
DoCmd.Close acForm, stDocName, acSaveYes
DoCmd.OpenForm stDocName, , , , acFormAdd, , Me![ReportID]
Exit_cmdEnterBudgetInfo_Click:
Exit Sub
Err_EnterBudgetInfo_Click:
MsgBox Err.Description
Resume Exit_cmdEnterBudgetInfo_Click
End Sub
以下是子表单的代码(Budget_fsub):
Option Compare Database
Option Explicit
'global variable
Dim repID As Long
'form load event
Private Sub Form_Load()
Me.ReportID.Value = repID
DoCmd.RunCommand acCmdSave
End Sub
'form open event
Private Sub Form_Open(Cancel As Integer)
SetReportID
If repID = 0 Then
Cancel = True
Exit Sub
End If
End Sub
'function to set reportID from the openargs
Private Function SetReportID()
repID = CLng(Nz(Me.OpenArgs, 0))
End Function
希望这有帮助。