我正在研究一個應允許用戶從列表框中選擇代碼的應用程序,並且此值應作爲參數傳遞給子表單(連續)它綁定到SQL查詢以使用從查詢返回的值填充表單。MS Access通過參數化查詢動態填充連續表單子表
如何將父窗體上的列表框連接到連續窗體(子窗體),使列表框中的更改在子窗體中註冊並且它(子窗體)會相應地重新填充?
下面的代碼是我目前在我的父窗體中觸發子窗體中的更改。但是我仍然錯過了觸發子表單中信息重新加載的位。
storedproc
SELECT tblACCOUNT.ACCOUNT_LABEL, tblACCOUNTValue.[ACCOUNTVALUE_VALUE]
FROM ((tblUPS INNER JOIN tblProductUPS ON tblProductUPS.[PRODUCTUPS_UPS] = tblUPS.[UPS_CODE]) INNER JOIN tblACCOUNT ON tblUPS.UPS_ID = tblACCOUNT.ACCOUNT_UPSID) INNER JOIN tblACCOUNTValue ON tblACCOUNTVALUE.[ACCOUNTVALUE_ACCOUNTID]= tblACCOUNT.[ACCOUNT_ID]
WHERE TBLPRODUCTUPS.[PRODUCTUPS_PRODUCTID] = (SELECT tblProductLevel.[PRODUCTLEVEL_ID]
FROM tblProductLevel WHERE tblProductLevel.[PRODUCTLEVEL_Code] IN ([UPSIDS])
);
這是我的子窗體字段,我想綁在我的查詢作爲查詢參數的來源。
Public Property Let qString(unstring As String)
If Not IsNull(unstring) And Len(unstring) > 0 Then
Currentstring = unstring
End If
End Property
下面的代碼是在我的母體形式我測試代碼直接連接到我創建和直接傳遞參數到查詢查詢。但是,由於我的子表單本身與查詢綁定,我需要一種方法來獲取子表單查詢並傳遞我需要傳遞的信息,然後在表單上調用更新。
Private Sub LoadSubform(unspscstring As String)
On Error GoTo Err_LoadSubform_Change
Dim dbs As Database
Dim strSQL As String
Dim strSelect As String
Dim strQueryName As String
Dim qryDef As QueryDef
Dim rst As Recordset
Dim prmOne As DAO.Parameter
Set dbs = CurrentDb
'then we'll open up the query:
Set qryDef = dbs.QueryDefs("spgetAttributeByUNSPSC")
'Now we'll assign values to the query using the parameters option:
'link your DAP.Parameters to the query
'Set prmOne = qryDef.Parameters!param_one
'prmOne = unspscstring
qryDef.Parameters(0) = unspscstring
'Now need to somehow trigger an update on the subform
'Close all objects
rst.Close
qryDef.Close
Set rst = Nothing
Set qryDef = Nothing
Bye_LoadSubform_Change:
Exit Sub
Err_LoadSubform_Change:
Beep: MsgBox Error$, 16, "Select Failed"
Resume Bye_LoadSubform_Change
End Sub
爲什麼你覺得有必要這樣做,對付所有設置子表單的常用方法? – Fionnuala 2012-08-13 16:25:13
你真的在使用DAP嗎?他們前段時間過時了。 – Fionnuala 2012-08-13 16:28:27
我對ACCESS相對來說比較陌生,所以我可能不會意識到處理這種情況的常見方法 – Kobojunkie 2012-08-13 16:39:57