0

テーブルからデータを返すサブフォームがあります。ただし、フィルター プロパティを使用して、このデータをさらにフィルター処理したいと考えています。

ラジオ ボタン、コンボ ボックス、および使用する変数をラジオ ボタンの選択に応じて正しい値に設定する case ステートメントのグループがあります。

変数を埋めるための私のコードは完全に機能しますが、必要な文字列を手動で入力しない限り、vba を使用してフィルターを設定することはできません。

私の問題は、フィルター文字列が構文的に正しくないことだと思いますが、その方法がわかりません。おそらくテキスト区切り文字と関係があります。

Forms![frmPendingActions]![qryPendingAction subform].Form.Filter = Filterby = FilterCrit
Forms![frmPendingActions]![qryPendingAction subform].Form.FilterOn = True

この質問では、Filterby=[Reporter] および FilterCrit= Fake Name であると仮定します。

4

1 に答える 1

2

はい、問題はテキスト区切り文字に関係していると思います。コードは次のようになります。

Forms![frmPendingActions]![qryPendingAction subform].Form.Filter = "[Reporter] ='" &  FilterCrit  & "'"

フィルターは、where という単語を除いた where 句とまったく同じように作成する必要があります。フィルタリングする列のデータ型がテキストの場合、基準を一重引用符または二重引用符で囲む必要があります。列が日付データ型の場合は、# で囲む必要があります。列が数値データ型の場合は、囲む必要はありません。

Reporter 列で常にフィルタリングする必要がない場合は、if ステートメントまたは select case ステートメントを使用して文字列を作成し、その文字列をフォーム フィルターに適用できます。

例えば:

If [somecondition] Then
   strFilter="[Reporter]='" & FilterCrit & "'"
Else
   strFilter="[ID]=" & 0
End If
Forms![frmPendingActions]![qryPendingAction subform].Form.Filter = strFilter

これが役立つことを願っています。

于 2012-06-18T08:42:47.887 に答える