私は、ユーザーが日付範囲、施設名(これらはコンボボックスに由来)を入力できるようにデザインされたフォームを構築しました。 Accessでクエリを生成する番号。フィールドが空白のままになっている場合はすべての施設の選択した日付範囲内の結果を返し、選択されている場合は特定の施設の結果のみを返したいと考えています。私はまた、結果を人のバッジ番号に一致するものに制限できるようにしたい。複数のフィールドを持つクエリの条件を入力する値またはヌル
だから私が望む可能性が次のようになります。
- 日付範囲=ユーザーによって定義|施設 - すべて選択されていない場合|バッジ#=選択されていない場合はすべて
- 日付範囲=ユーザー定義|施設 - すべて選択されていない場合|バッジ#=ユーザー定義
- 日付範囲=ユーザー定義|ファシリティ - ユーザ定義|バッジ#=選択されていない場合はすべて
- 日付範囲=ユーザー定義|ファシリティ - ユーザ定義|バッジ#=ユーザー定義
私はもともと、日付範囲と施設名だけでビルドしていて、うまくいきました。 #バッジを追加しようとすると、正しく動作しません。
セクションTO WHEREのための私のSQLは次のとおりです。私には
WHERE (((Diversion.Transaction_Date) Between [Forms]![Parameters]![FromDate] And [Forms]![Parameters]![ToDate])
AND ((Diversion.Employee_Badge_Number)=[Forms]![Parameters]![BadgeNumber])
AND ((Diversion.Facility)=[Forms]![Parameters]![FacilitySelect]))
OR (((Diversion.Transaction_Date) Between [Forms]![Parameters]![FromDate] And [Forms]![Parameters]![ToDate])
AND ((Diversion.Facility)=[Forms]![Parameters]![FacilitySelect])
AND ((([Diversion].[Employee_Badge_Number]) Like [Forms]![Parameters]![BadgeNumber]) Is Null))
OR (((Diversion.Transaction_Date) Between [Forms]![Parameters]![FromDate] And [Forms]![Parameters]![ToDate])
AND ((Diversion.Employee_Badge_Number)=[Forms]![Parameters]![BadgeNumber])
AND ((([Diversion].[Facility]) Like [Forms]![Parameters]![FacilitySelect]) Is Null))
OR (((Diversion.Transaction_Date) Between [Forms]![Parameters]![FromDate] And [Forms]![Parameters]![ToDate])
AND ((([Diversion].[Employee_Badge_Number]) Like [Forms]![Parameters]![BadgeNumber]) Is Null)
AND ((([Diversion].[Facility]) Like [Forms]![Parameters]![FacilitySelect]) Is Null))
OR (((([Diversion].[Facility]) Like [Forms]![Parameters]![FacilitySelect]) Is Null));
、それは私がフォームから取得したい四つの可能な結果を含めているように見えますが、それは正しく動作しません。たとえば、施設のフィールドを空白のままにして、バッジ番号を定義すると、それでもすべての結果が表示されます。ファシリティを定義し、バッジ番号を定義すると正しい結果が得られます。
アイデア?
ワイルドカードを使用しないLIKE演算子は役に立たず、=記号を使用することもできます。 Is Null基準は使用される意味がありません。動的なパラメータ化クエリは決して使用しません。私はフィルタ基準文字列を構築するためにVBAを好む。 http://allenbrowne.com/ser-62.html – June7
ありがとうJune7。あなたとメアリが提供してくれたことは、私がやろうとしていたことよりもはるかに意味がありました。 – CasWalker