アプリ版:「スタンプのみでお礼する」機能のリリースについて

DCountの返り値が必ず0になってしまうのです。
該当のフィールドには値は入っています。

しかし
Sub test()
Dim ColName As String
ColName = "あああ"
Debug.Print DCount("[" & ColName & "]", "test", "[" & ColName & "] = '" & ColName & "'")
End Sub
をすると、どんなに値がはいっていても0になってしまいます。

フィールドの型はテキスト型です。

「アクセス DCountの返り値が必ず0に」の質問画像

A 回答 (2件)

> DCount("[" & ColName & "]", "test", "[" & ColName & "] = '" & ColName & "'")



これは何を得たいのでしょう。
ColName = "あああ" なら

DCount("[あああ]", "test", "[あああ] = 'あああ'")

になると思いますが、添付された図内に [あああ] = 'あああ' は無いですね。
単に

DCount("[あああ]", "test")

であれば、図の見えている範囲では 5 が返ってくると思いますが・・・・
    • good
    • 0
この回答へのお礼

フィールド名も検索文字も変数に入れてましたね。ありがとうございました。

お礼日時:2013/02/27 20:42

先日はねぎらいのお言葉を戴き、ありがとうございました。


http://oshiete.goo.ne.jp/qa/7900814.html


さて、本題ですが・・・
テキスト型のフィールドを絞り込み条件としたDCount関数
では、確かに第3引数は「[フィールド名]='検索文字列'」に
なることが多いですが、それ以外の形を使用する場面も
あります。

今回提示されたコード上の式から私が推測する、「想定した
式」に近く、かつ「意図した(と思われる)結果」が得られるのは、
以下に示す式です。

但し、Accessでテキスト型のフィールドを作成したときに
既定の値となる「Null」は特殊な値で、「=」では同じ値か
どうかの判定ができません。
(イミディエイトウィンドウで「?Null=Null」の結果を確認する
 と、「True」ではなく「Null」が返ります)

PVTETEJPB8さんが、この点をどう想定していたかによって
「意図した結果」も変わるため、以下のように、結果が
異なる2通りの式が考えられます:

a) Debug.Print DCount("[" & ColName & "]", "test", "[" & ColName & "]=[" & ColName & "]")
b) Debug.Print DCount("[" & ColName & "]", "test", "Nz([" & ColName & "])=Nz([" & ColName & "])")

上記の2つの式のうち、
 a)の場合は『あああ』の値が「Null」以外のものの全件数が、
 b)の場合は『あああ』の値に関係なく、テーブルの全件数が、
それぞれ返されます。
(第2引数を省略したNz関数では、対象がテキスト型なら
 空文字("")、数値型の場合は「0」に変換されます。
 Nullと違い、「""=""」の比較結果は、通常の文字列と
 同様に「True」となるため、テーブルの全件数がカウント
 される結果となります)


但し、上記の結果を得たい場合、通常はそれぞれ以下のように
「第3引数を省略した式」を使用します:

a) Debug.Print DCount("[" & ColName & "]", "test")
 または
b) Debug.Print DCount("*", "test")

http://office.microsoft.com/ja-jp/access-help/HA …
(ページ中ほどの「+ヒント」(青文字の折り畳み)以降を特に参照)


・・・以上、長くなりましたが、参考まで。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2013/03/03 19:28

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

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


このQ&Aを見た人がよく見るQ&A