2013-07-23 35 views
1

我有一個按鈕的形式,當我推它時,它打開另一個形式。當我關閉第二個表單時,我需要刷新第一個表單。形式轉換和數據刷新

因此,我需要在全局變量中插入第一個表單名稱以從第二個表單訪問表單名稱以刷新第一個表單。

我試圖創建此:

global formname as form 

formname = activeform.name 

,但我收到一條錯誤消息:該選項是隻讀的。

+0

這是什麼語言? – Blender

+0

原標題說'訪問',所以我會去那,除非OP更正它。 – Joe

+0

這是MS Access VBA。 –

回答

3

Click事件的按鈕上,您可以將該表格的名稱作爲OpenArgs的屬性DoCmd.OpenForm

Private Sub Command4_Click() 
    DoCmd.OpenForm "frmStaff", , , , , , Me.Name 

End Sub 

Close事件的第二種形式,你可以檢查這個(字符串)值:

Private Sub Form_Close() 
    If Me.OpenArgs <> "" Then 
     'MsgBox Me.OpenArgs 
     Forms(Me.OpenArgs).Refresh 'or .Requery 
    End If 
End Sub 
3

你爲什麼不只是進入VBA代碼後面,配合緊密子刷新?我不明白,需要在表格之間傳遞一個全局變量 - 你應該能夠只是做這樣的事情在你的第二個形式:

Private Sub Form_Close() 
    Form_YourFormHere.Refresh 
End Sub 
0

如果必須使用了這種方法,這第一種形式的模塊:

Public formname as Form 

Private Sub Command1_Click() 
    Set formname = Me 
End Sub 

Public formname as String 

Private Sub Command1_Click() 
    formname = Me.name 
End Sub 

形式是對象類型,並且只能分配給使用一組語句的變量,否則VBA會認爲你正試圖assig n對象對變量的值。

你說你想要的形式名稱,但是你的變量是一個表單類型,而不是一個字符串。第一個代碼片段將實現出現要嘗試實現的結果,第二個代碼片段將實現您想要實現的結果

不過,不同的方法可能會更好,更可靠。