1

在单击按钮打开第二个表单后,我试图将表单 1 上的字段 ReportID(这是一个数字字段)中的值传递给名为 Budget_fsub 的表单上的字段 ReportID。我已经尝试使用此代码将值传递给第二种形式,并且看起来它可以工作,但是当我转到保存第二种形式的值的表时,该值尚未被记录。我究竟做错了什么?

Form1 带有打开 form2 的按钮:

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
4

1 回答 1

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

希望这可以帮助。

于 2012-11-30T21:31:18.687 回答