我有一個主表單和一個子表單。我希望子表單的記錄源根據主表單的 ID 欄位的值進行更改。當我在Form_Load父表單的情況下這樣做時,這有效。但是,我也希望它在用戶切換到主表單(單個表單)打開時的新記錄時更新。
我有 atm 的代碼如下:
Private Sub Form_Load()
'***************************************************************************
'Purpose: Switch subform recordsource based on recipe ID
'Inputs: None
'Outputs: None
'***************************************************************************
Dim strRecipeID As String
Dim strSub1QueryName As String
strRecipeID = Forms![frmMainForm]![RecipeID] 'get RecipeID
strSub1QueryName = DLookup("[QueryName]", "tblRecipeQueries", [RecipeID] = strRecipeID) 'Get name of query
Forms!frmMainForm!frmSub1Sub.Form.RecordSource = MakeSqlString(strSub1QueryName) ' Set Subform1 recordsource
End Sub
MakeSQLString()是一個函式,它從給定的訪問查詢中獲取 SQL SELECT 陳述句作為字串。我嘗試了change事件、Click事件和Current事件,然后重新查詢子表單,但對子表單的內容沒有任何影響(記錄源不會改變),但保持與加載表單時選擇的相同。我不確定哪些其他事件可以為此作業,或者我可以從哪里最有效地執行記錄源中的更改,也許是子表單?也許它與父表單之前的子表單加載有關?我不確定,可能是一個新手錯誤。
我很感激任何幫助。順便說一句,子表單上的欄位保持不變,因此更改記錄源只會更新在查詢中進行的計算以獲取這些欄位的值。查詢名稱存盤在我的資料庫中的一個表中。RecipeID同樣,它在主表單的 Load 事件中作業,當主表單打開并且用戶導航到所述主表單上的新表單時,我無法讓它即時更新。
uj5u.com熱心網友回復:
在您的 DLookup 中,您沒有將 where 部分括在引號中。你有:
DLookup("[QueryName]", "tblRecipeQueries", [RecipeID] = m_selectedId)
但它應該是:
DLookup("[QueryName]", "tblRecipeQueries", "RecipeID =" & m_selectedId)
那應該可以解決您的問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/514549.html
上一篇:在查詢列上設定默認值
