为什么我的表没有记录我在访问中传递给它的值

时间:2012-11-30 14:15:53

标签: ms-access-2010

我尝试在单击按钮打开第二个表单后,将表单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

1 个答案:

答案 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

希望这有帮助。