2010-07-24 74 views
0

所以我從一種形式傳遞的ID值到下一個使用MS Access 2007 - OpenArgs沒有將值傳遞給下一個表單?

Docmd.OpenForm "SecondForm",,,,,, MainID 
Docmd.Close AcForm, "FirstForm", acSaveYes 

,然後我檢查所述第二形式的加載事件的值:

MainID = val(Me.OpenArgs) 

,當我調試和通過I步驟將鼠標懸停在上面,可以看到它包含一個值

然後我在第二個窗體上有一個應該重複該過程的按鈕單擊事件,但是當我運行以下操作時

Dim rs as DAO.Recordset 
Dim dbs as DAO.Database 
Set dbs = CurrentDB 

Set MyRS = dbs.OpenRecordset("tblMain") 

If MyRS!MainID = MainID THen 

之後,它的一些rs.edit等東西....例程甚至沒有使它那麼遠。一旦我執行相同的調試和懸停,此處的值爲空。有我丟失的東西,因爲我可以看到表格上加載事件的價值,但一旦我嘗試在其他操作就可以使用它,它是MIA

感謝 賈斯汀

回答

1

聽起來這可能是一個範圍問題。 MainID聲明在哪裏?

如果您在表單打開過程中聲明它,那麼該過程完成後它就會消失。

考慮更改按鈕的單擊事件過程。

If MyRS!MainID = Val(Me.OpenArgs) Then 

OpenArgs在表單加載後不會「消失」。我不明白你爲什麼需要將OpenArgs存儲到你的MainID變量中。你可以在你使用MainID變量的地方使用Val(Me.OpenArgs)。

或者,您可以使MainID成爲模塊級別變量,以便它可用於所有表單的過程。

更新:是否有任何情況下您可能會打開窗體而不爲OpenArgs提供值?如果是這樣,Val(Me.OpenArgs)將返回0.這是否是您的應用程序邏輯中的錯誤條件?當沒有提供OpenArgs值時,您的命令按鈕是否應該是「可點擊」(啓用)?

+0

謝謝漢斯......爲我修好了它。 – Justin 2010-07-24 19:17:21

相關問題