ユーザーがリストボックスからコードを選択できるようにするアプリケーションに取り組んでいます。この値は、SQLクエリに関連付けられたサブフォーム(連続)にパラメーターとして渡され、フォームに返された値を入力する必要がありますクエリ。
リストボックスの変更がサブフォームに登録され、それに応じて(子フォーム)が再入力されるように、親フォームのリストボックスを連続フォーム(子フォーム)に関連付けるにはどうすればよいですか?
以下のコードは、サブフォームの変更をトリガーするために現在親フォームにあるものです。しかし、これでサブフォームの情報のリロードをトリガーするビットがまだありません。
ストアドプロシージャ
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