電子書籍の厳選無料作品が豊富!

AccessでDCOUNT関数を使用したいのですが、
criteriaの書き方がよく分かりません。

「&」をつける場合や「'」をつける場合(文字列の場合に付ける
とはありますが)、「"」の有無など基本的な意味がわからないので
コンパイル時によくエラーになってしまいます。

それを詳しく解説してあるURLでもあれば教えていただきたいので
すが。
よろしくお願いいたします。

A 回答 (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のヘルプより詳しくこの部分を解説しているサイトは、見たことないですね。
まぁ、条件指定は、色々なケースがありますから、かなり応用が、必要になります。
    • good
    • 1
この回答へのお礼

>他のコントロールから値を参照したり、変数の値を使う場合は、
 その部分を文字列から外へ出さないといけません。

という意味がヘルプを見ただけでは分かっておりませんでした。
ちょっとすっきりした気分です。
とにかく繰り返し使用して応用力をつけたいと思います。
どうもありがとうございました。

お礼日時:2003/01/15 09:15

>詳しく解説してあるURL


は、適当なものを見つけられなかったのですが・・・・・、

SQLで抽出条件を記述する際に注意すべきなのは、「データ型」です。

SQLは文字列式で記述しますので、数値型の値は文字列型として記述する(""内の文字列は、「"」ではなくて、「""」または「'」で囲む。数値型の変数は CSstr関数で文字列型に変換する。)。日付型の数値は「#」(日付リテラル)で囲む。などの操作が必要になります。

不慣れなうちは、クエリーのデザインビューで抽出条件を設定して、その SQLビューから WHERE 以降を取り出し、データ型を修正(「"」の使い方をチェック)すると良いのではないでしょうか?

で、うまく抽出ができないときは、例えば VBAのモジュールウィンドウで、
Msgbox "抽出条件"
と記述して実行させてみて、実際に Accessで(文字列として)どのように解釈されているかをチェックしてみると、構文の間違いが見つけやすいと思います。

まずは、HELPの質問(A)タブで、「文字列」で検索して「文字列内でのクォーテーション」、
「抽出条件」で検索して「抽出条件の指定」
をよく読んでみてください。
    • good
    • 0
この回答へのお礼

とにかく「試してみる」というのがアクセスの基本でしたね。
楽をしようとせず、コツコツやっていかなければということ
を忘れていました。
ご丁寧な回答ありがとうございました。

お礼日時:2003/01/15 09:08

Accessのヘルプで「DCount 関数」および「DCount 関数の使用例」の解説では、


だめですか。 かなり詳しく書いていると思うのですが・・・

実際のコードをその部分だけでもここへ書いてみたら如何でしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございます。
確かにヘルプに書いてあるようですがcriteriaの書き方の規則は
読んだだけでは理解できませんでした。
例えばヘルプにある
= DCount("[出荷日]", "受注", "[出荷先都道府県] = '" _
& Forms![受注]![出荷先都道府県] & "' AND [出荷日] > #95-1-1#")
の場合、criteria部分の " や ’ がどれを囲んでいるのかが
はっき分かりません。
あまりにも基本的な質問かもしれませんが
詳しく解説してあるURLがあれば幸いです。

お礼日時:2003/01/14 16:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報