2017-09-05 40 views
1

想象一下,爲了防火目的,窗體僅包含需要相互鏡像的子窗體和文本框。如何從主窗體中引用子窗體中的對象上的事件

我試圖通過對文本框設置控制源到子窗體中的字段的值來實現這一點,這工作,使它們互爲鏡像,但文本框是不可編輯的,所以這是一個不合適的解。

我決定嘗試的下一件事是在兩個控件上使用AfterUpdate事件來運行設置其他控件的值的代碼。

這是容易的文本框:

'Set value of Notes field on subform whenever value of the corresponding textbox 
Private Sub Notes_Textbox_AfterUpdate() 
    Me.subform.Form![Notes] = Me.Notes_Textbox.Text 
End Sub 

然而,這不是子窗體字段一樣簡單。我不知道如何以某種方式引用子窗體中的某個字段上的事件,這種方式仍然允許我引用子窗體之外的控件。

作爲示範,我需要一種方法來做到這一點:

Private Sub subform_Notes_AfterUpdate() 
    Me.Notes_Textbox.Text = Me.subform.Form![Notes] 
End Sub 

我能子窗體的範圍內訪問窗體字段更新後事件,但如果我這樣做,那麼我將無法訪問文本框,因爲它在主窗體中,而不是子窗體。

所以我要麼需要一種方法來定義從主窗體範圍內的子窗體中的字段上的事件函數,或者使窗體的文本框部分保持子窗體在數據表中打開的方式視圖。

回答

1

不知道我得到整個問題(如何數據表視圖中發揮作用?),但這應該做你想要什麼:

(子窗體)

Private Sub Notes_AfterUpdate() 
    Me.Parent!Notes_Textbox.Value = Me![Notes].Value 
End Sub 

編輯從評論:到目前爲止,最簡單的解決方案將是一個連續的形式,而不是一個子表中的數據表。

您可以擁有兩個文本框,一個在詳細信息部分單行,一個在表單頁眉或頁腳中。兩者都具有相同的控制源,並在編輯另一個控制源時自動更新。無需代碼。

如果它必須是子數據表,則可以使用類似的方法:將主窗體綁定到相同的記錄源,並在子窗體的On Current中將主窗體移動到相同的當前記錄。

+0

啊,'.Parent'這就是我一直在尋找的,謝謝。此外,數據表起作用,因爲我需要該子窗體加載數據表視圖,因爲這就是客戶需要這種形式,我不能把一個文本框放入子窗體,如果沒有它搞亂數據表視圖或文本框不完全像我一樣渲染需要它。 –

+1

你讓我困惑。數據表視圖意味着子窗體中有多個記錄。什麼用於同步主表單文本框與子表單中的整個列?請說明你實際想要達到的目標。 @MarkKramer – Andre

+0

在數據表視圖中,您只能看到字符串的第一行,但客戶端希望在選擇該記錄時該字段中的所有行都可見,這意味着我需要將文本框鏈接到字段和客戶端希望文本框是可編輯的,這就是爲什麼我不能將該字段設置爲文本框的數據源。 –

相關問題