2012-06-20 30 views
0

我想:傳遞參數從一種形式到另一個和添加新的記錄

爲了能夠打開一個表格,然後從控制箱的物品,點擊一個按鈕來打開一個新的形式,並能夠輸入將之前選定項目添加到其字段的新記錄。

我迄今所做的:

我做了兩種形式,增加了控制兩種,添加一個命令按鈕。 我已經使用的MS Access嚮導添加以下代碼:

Private Sub CommandNext_Click() 
    On Error GoTo Err_CommandNext_Click 

    Dim stDocName As String 
    Dim stLinkCriteria As String 

    stDocName = "FormX" 
    DoCmd.OpenForm stDocName, , , "[BatchID] = " & Me![ListBatch], acFormAdd 

    Exit_CommandNext_Click: 

    Exit Sub 

    Err_CommandNext_Click: 

    MsgBox Err.Description 
    Resume Exit_CommandNext_Click 

End Sub 

第三行是我的。

結果:

  • 如果第二形式不是已經打開,按壓第一窗體上的按鈕將打開第二個空數據(文本字段中要顯示的值的參數是空的)。
  • 如果第二種形式已經打開,按下按鈕,第一個表格上會改變焦點轉移到第二個,它會顯示我所選擇
  • 與參數匹配的時候,現有的記錄我想打開第二種形式沒有任何舊記錄顯示,但所選參數出現在指定的文本字段中。

在第二形式篩選屬性,都會與我使用按鈕發送的參數填充這兩種情況下,但是這不是我的目標了。

回答

1

您是否知道打開窗體命令的第四個參數是要應用的where條件或過濾器?

如果使用名爲open arguments(OpenArgs)的最後一個參數,則可以在第二個窗體打開事件中編寫代碼以設置所討論的列的默認值。

開放形式的代碼會是這個樣子:

DoCmd.OpenForm stDocName, , , , acFormAdd, , Me![ListBatch] 

然後,您可以把類似於此第二形式打開事件下面的代碼:

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.TextBoxBatchID.DefaultValue = defaultID 

或者,如果你不需要要爲每個新記錄設置ID,您只需將控件的當前值設置爲defaultID變量即可。

Me.TextBoxBatchID = defaultID 

請注意上面的代碼將無法打開窗體如果開的說法竟然是空或0

+0

我會嘗試在一個位。只是想表達我的驚訝,我第一次在msdn.microsoft.com上閱讀OpenForm時沒有發現這一點。即使在你告訴我是什麼後,我仍然很難理解微軟寫了些什麼。其他問題 - 我可以通過http://www.fmsinc.com/free/newtips/access/accesstip13.asp解釋的方式傳遞多個參數,還是有更簡單的方法? –

+0

是的技術說明至少可以說有點幹。 我認爲鏈接顯示了在open arguments參數中發送多個參數的最簡單方法。您當然可以使用您希望的任何字符作爲分隔符,前提是它不包含在您要發送的數據值中。 – Mark3308

相關問題