2012-12-17 58 views
0

當窗體已經在Access中打開後,是否可以改變Openargs的值?它只在表單第一次打開時有效。它的失敗形式已經公開。Openargs當窗體已經打開

編輯:

我在形式

If Not IsNull(Me.OpenArgs) Then 
    Me.Recordset.FindFirst ("Id =" & Me.OpenArgs) 
    If Me.Recordset.NoMatch Then 
     MsgBox "ISOS not found" 
    End If 
End If 

Me.OpenArgs的onActivate情況下,本代碼包含在使用此命令DoCmd.OpenForm "<Form_Name>", acNormal, , , , acWindowNormal, Forms!Lookup_Form!Id開拓的主要形式,另一種形式的搜索結果。

+0

不,但您爲什麼需要?你不能分配給其他變量嗎? – Fionnuala

+0

我如何將它分配給另一個變量?我有一個包含搜索功能的表單,然後打開主結果作爲打開的參數傳遞結果。 – Omar

+0

你用OpenArgs做什麼?你想傳遞一個新的搜索字符串嗎?請張貼一些代碼。 – Fionnuala

回答

3

如何從搜索表單運行你的代碼,就像這樣:

Dim frm As Form 

If Not CurrentProject.AllForms("Form1").IsLoaded Then 
    DoCmd.OpenForm "Form1" 
End If 

Set frm = Forms!Form1 
frm.Recordset.FindFirst ("Id =" & Me.ID) 
If frm.Recordset.NoMatch Then 
    MsgBox "ISOS not found" 
End If 
2

我最近已經解決了這個相同的問題的一個項目我的工作,所以我想我會提供解決我提出的解決方案。

我在這種情況下發現的最簡單的事情就是在DoCmd.OpenForm之前調用DoCmd.Close。這將關閉窗體的當前實例並打開一個新窗體,這將強制Form_Load事件再次用新參數觸發。

DoCmd.Close acForm, "Form2", acSaveNo 
DoCmd.OpenForm "Form2", acNormal, , , , , {arg1}|{arg2} 

這裏的兩個假設是: 1。即「窗體2」的狀態總是被碼在Form_Load事件初始化。 2.在傳遞新參數時,我試圖保留「Form2」中沒有狀態數據。

相關問題