- ベストアンサー
AccessのDCOUNT関数のcriteria
AccessでDCOUNT関数を使用したいのですが、 criteriaの書き方がよく分かりません。 「&」をつける場合や「'」をつける場合(文字列の場合に付ける とはありますが)、「"」の有無など基本的な意味がわからないので コンパイル時によくエラーになってしまいます。 それを詳しく解説してあるURLでもあれば教えていただきたいので すが。 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> criteria部分の " や ’ がどれを囲んでいるのかが はっき分かりません。 = DCount("[出荷日]", "受注", "[出荷先都道府県] = '" _ & Forms![受注]![出荷先都道府県] & "' AND [出荷日] > #95-1-1#") では、上記を例にして 第3引数のcriteria部分で使われている " と & と ' に ついて説明します。 ご存知と思いますが、式の意味は、"受注"というテーブルまたはクエリの [出荷先都道府県]フィールドの値が、"受注"というフォームの[出荷先都道府県] という名のコントロールの値と一致し、且つ[出荷日]が、95/1/1より以降のものの レコード数を算出する というものですね。 ここでは、条件として指定する「出荷先都道府県名」をフォームから参照していますが、 これを直接「東京都」を指定するとなれば、criteria部分は、 "[出荷先都道府県] = '東京都' AND [出荷日] > #95-1-1#" のようになります。 引数は、文字列で指定することになっていますので、全体が " で括られて 全体が一つの文字列です。 また、[出荷先都道府県]フィールドが、テキスト型であるため東京都を ' で括る 必要があります。 それで、カウントするのは、東京都だけでなく、いろいろ変更したいとなれば、 フォームにテキストボックス等を配置し、そこで指定するようにする訳ですね。 このように他のコントロールから値を参照したり、変数の値を使う場合は、 その部分を文字列から外へ出さないといけません。 ですから一旦参照する手前で " を付けて切り、参照部分を連結演算子の & で 連結するのです。 その後方にまた & で残りの文字列を連結します。 つまり東京都の替わりに " & Forms![受注]![出荷先都道府県] & " がそっくり入ることになります。 このことは、この他の頭にDが付くDsumなどの定義域集合関数やSQL文にも共通します。 あと是非、デバッグ方法をマスターするようにしてください。 ここでエラーが出ということですが、この場合、この行にブレークポイントを設定して 実行し、イミディエイトウインドウに ? "[出荷先都道府県] = '" & Forms![受注]![出荷先都道府県] & "' AND [出荷日] > #95-1-1#" と入力し、その行で<Enter>を押して、 [出荷先都道府県] = '東京都' AND [出荷日] > #95-1-1# と返ってくるか確認します。 Accessのヘルプより詳しくこの部分を解説しているサイトは、見たことないですね。 まぁ、条件指定は、色々なケースがありますから、かなり応用が、必要になります。
その他の回答 (2)
- yoisho
- ベストアンサー率64% (331/516)
>詳しく解説してあるURL は、適当なものを見つけられなかったのですが・・・・・、 SQLで抽出条件を記述する際に注意すべきなのは、「データ型」です。 SQLは文字列式で記述しますので、数値型の値は文字列型として記述する(""内の文字列は、「"」ではなくて、「""」または「'」で囲む。数値型の変数は CSstr関数で文字列型に変換する。)。日付型の数値は「#」(日付リテラル)で囲む。などの操作が必要になります。 不慣れなうちは、クエリーのデザインビューで抽出条件を設定して、その SQLビューから WHERE 以降を取り出し、データ型を修正(「"」の使い方をチェック)すると良いのではないでしょうか? で、うまく抽出ができないときは、例えば VBAのモジュールウィンドウで、 Msgbox "抽出条件" と記述して実行させてみて、実際に Accessで(文字列として)どのように解釈されているかをチェックしてみると、構文の間違いが見つけやすいと思います。 まずは、HELPの質問(A)タブで、「文字列」で検索して「文字列内でのクォーテーション」、 「抽出条件」で検索して「抽出条件の指定」 をよく読んでみてください。
お礼
とにかく「試してみる」というのがアクセスの基本でしたね。 楽をしようとせず、コツコツやっていかなければということ を忘れていました。 ご丁寧な回答ありがとうございました。
- ja7awu
- ベストアンサー率62% (292/464)
Accessのヘルプで「DCount 関数」および「DCount 関数の使用例」の解説では、 だめですか。 かなり詳しく書いていると思うのですが・・・ 実際のコードをその部分だけでもここへ書いてみたら如何でしょうか。
お礼
ありがとうございます。 確かにヘルプに書いてあるようですがcriteriaの書き方の規則は 読んだだけでは理解できませんでした。 例えばヘルプにある = DCount("[出荷日]", "受注", "[出荷先都道府県] = '" _ & Forms![受注]![出荷先都道府県] & "' AND [出荷日] > #95-1-1#") の場合、criteria部分の " や ’ がどれを囲んでいるのかが はっき分かりません。 あまりにも基本的な質問かもしれませんが 詳しく解説してあるURLがあれば幸いです。
お礼
>他のコントロールから値を参照したり、変数の値を使う場合は、 その部分を文字列から外へ出さないといけません。 という意味がヘルプを見ただけでは分かっておりませんでした。 ちょっとすっきりした気分です。 とにかく繰り返し使用して応用力をつけたいと思います。 どうもありがとうございました。