1

私はこれを100万通りの方法でやろうとしました。最初はまったく動かなかったのですが、値を入れたら動くようになりました。必要なのは、クエリがフォームに入力した内容に基づいてレコードをフィルター処理することです。

このコードを MovieYear 列の「基準」セクションで使用しました。フォームの MovieYear1 および MovieYear2 テキスト ボックスに数値を入力すると、正しくフィルター処理されます。

Between [Forms]![SearchForm]![MovieYear1] And [Forms]![SearchForm]![MovieYear2]

しかし、値を入力しないと、まったくレコードが作成されません。何か助けはありますか?私はほとんどすべてを試しました(まあ、少なくとも私は持っていると思います)。ワイルドカード「*」を使用してみましたが、実際には関数の間で使用できないことがわかりました...

また、VBA で Me.Filter を実行しようとしましたが、うまくいかなかったようです。多分私は何かを逃したのですか?

これが私のフォームです。

前もって感謝します!:)

4

2 に答える 2

1

たとえば、フォーム内の Null のチェックをクエリに追加できます。

SELECT *
FROM table
WHERE Between [Forms]![SearchForm]![MovieYear1] 
      And [Forms]![SearchForm]![MovieYear2]
      OR [Forms]![SearchForm]![MovieYear1] Is Null

最初の年が null の場合、これはすべてのレコードを返します。2 年目は無視されます。

于 2013-03-21T12:06:22.943 に答える
0

conditionalボックスの値を確認した後、次のケースに従ってクエリを作成できるクエリビルダーを使用できます。

  1. のみMovieYear1が与えられた場合、それ以降のすべての年のデータMovieYear1は ですdate>MovieYear1
  2. のみMovieYear2が与えられた場合、それ以降のすべての年のデータMovieYear2は ですdate<MovieYear2
  3. 両方が指定されている場合は、 を使用しbetween clauseてデータを取得します。

CASE WHENこれは、次の行に沿って使用して実装できます

CASE WHEN MovieYear2 IS NULL then date>MovieYear1
else when MovieYear1 IS NULL then date<MovieYear2
else date between MovieYear1  and MovieYear2 
于 2013-03-21T09:37:32.017 に答える