一連のクエリに基づいてデータをフィルタリングするContinuousサブフォームがあります。私はいくつかのデータに基づいてフッターに配置したサブフォームを作成する必要があり、これを達成するためのクエリを作成しました。サブフォームを再サブセット化するクエリセットのクエリを求めるプロンプトが表示されます
Private Sub UpdateXXXXX_Info()
If (Me.FormFooter.Visible <> True) Then
Me.FormFooter.Visible = True
End If
MsgBox "query start"
LabelXXXXX_.Caption = "XXXXX for: " & Me.[XXXXX__NAME] & " " & Me.[XXXXX__NAME] & " " & Me.[XXXXX__CATEGORY_NAME]
With CurrentDb.QueryDefs("XXXXX_Query")
.Parameters("XXXXXParam") = Me.[XXXXX_NAME]
.Parameters("XXXXXCategoryParam") = Me.[XXXXX_CATEGORY_NAME]
Set Me.XXXXX__Subform.Form.Recordset = .OpenRecordset
.Close
MsgBox "query complete"
End With
End Sub
連続フォームの各コントロールに関連付けられたClickイベントから呼び出されます。これはうまく動作し、私が期待しているようにフィルタリングします。連続フォームの性質上
(それ自体が別のフォームのサブフォーム)で、全体の継続的なフォームをリフレッシュする必要があります。
データをリフレッシュするとき、問題を引き起こしているPrivate Sub Form_Current()
Me.FormFooter.Visible = False
End Sub
。これは最初のように動作しますが、上部連続フォームの別のレコードをクリックすると、サブフォームはクエリパラメータの入力を促します。テストに基づいて、Me.FormFooter.Visible = True
を設定するときにこれを実行しています。 ではなく、の設定Visible = False
は、このイベントを回避します(他の望ましくない動作を引き起こします)。
アクセスできません。レコードセットを閉じるか、空白またはnull値に設定します。私はまた、Requeryのためのパラメータを設定する方法を見つけることができません。提示されるデータの量は、私がテーブル全体を引っ張って代わりにフィルタを適用することも禁止します。
どうすればこの現象を防ぐことができますか?
編集:明確にするために、ビジネス要件としてストアドクエリを使用する必要があります。
をビジネス要件として、私は私が保存されたクエリを使用しなければならない。このように、生のSQLを使用することはできませんこれを言及するのを忘れた – Thebluefish
あなたが保存されたクエリ(FROM)を使用しています。上記のSQLは、一時的にパラメータ(WHERE条件)をレコードソースに入れます。これは、あなたがやっていることに似ていますあなたのQueryDef。これにより、メインのクエリソースは決して変更されません。 – geeFlo
私のPMでチェックすると、私はまだこれを使うことができません。このような方法でSQL文を作成することにはいくつかのビジネス上の理由があります。 – Thebluefish