No.4ベストアンサー
- 回答日時:
No.3です。
> コード=の構文エラー 演算子がありません。
> 不明。
> とエラーメッセージが表示されます。
そのエラーメッセージの内容からすると、『コード』が「Null」(空白)のものがある、
ということだと思います(その事態は想定していませんでした)。
一応、こちらで作成したサンプルにて、DCountを使用した場合に、同様の
メッセージ(計2件)が表示されるのは確認しました。
(補足の文意を「集計クエリで解決はできたが、DCountの方はエラーとなる」
と取りました。もしも集計クエリの方でも上記エラーが出ているようでしたら、
元となるテーブルとクエリの情報(フィールド名とデータ型)をお知らせ下さい)
※なお、コードは数値型と想定しています。もしも文字列方の場合は、併せて
式を「"コード='" & [テーブル]![コード] & "'"」と変更する必要があります。
上記のエラーを回避するには、DCountの第1引数を「*」にします。
また、コードがNullのレコードで、クエリの表示結果が「#エラー」となるのを
回避するためには、第3引数にNz関数を使用します。
(コードの最小値は0か1でしょうから、「最小値-1」(=-1か0)にするのがよいかと
思います)
【Nullは重複数に含めない場合】
DCount("*","テーブル","コード=" & Nz([テーブル]![コード],-1))
※コードがNullの場合は、第3引数の結果がTrueにならない(Null=-1)ので
0件扱いとなるため、抽出条件の「>1」で弾かれます。
また、第3引数にNz関数を使用する代わりに、クエリの『コード』の抽出条件に
「Is Not Null」を指定する(→最初から集計の対象外にする)方法もあります。
【Nullも1つのコードとして重複扱いする場合】
DCount("*","テーブル","Nz(コード,-1)=" & Nz([テーブル]![コード],-1))
この回答への補足
>上記のエラーを回避するには、DCountの第1引数を「*」にします。
コードは数値で第1引数は"コード"で問題ないようなので
コードが文字だった場合、「*」ということでしょうか?
「"コード='" & [テーブル]![コード] & "'"」
文字列の場合は’で囲うと聞いたことがありますが、
これは、どこに対してかけている事になるのでしょうか?
例えばテーブル!コードだとすると
"コード=" & '[テーブル]![コード]'
では駄目だということですよね?
区切りの位置が今ひとつ分からないのですが・・・。
No.6
- 回答日時:
No.3/4/5です。
> それとこれはDCount("*","テーブル","品名='筆記具'")
> DCount("品名","テーブル","品名='筆記具'")
> でも問題ないですよね。
この例なら、それで大丈夫です。
(第3引数を省略した場合は、品名がNullのものがカウントの
対象になるかどうかが変わりますが、上記の例では第3引数
の条件によって、どちらもNullが除外されるので)
> そもそも[]ではなく""でフィールドとテーブルを指定するのは
> D関数の仕様なのですかね。
上の「DCount("品名","テーブル","品名='筆記具'")」の式は、
実は
「DCount("[品名]","テーブル","[品名]='筆記具'")」とか
「DCount("[品名]","[テーブル]","[品名]='筆記具'")」と
書くこともできるんです。
(特に、フィールドについては、「品名 A」といったように、間に
半角スペースが入った名前の場合は、角括弧が必須)
集計関数(DCountなど)の引数を、「""」で括るかどうかは、
引数に指定したフィールドや式などをいつ評価するか、という
タイミングの指定になっています。
例えば、テーブル1が以下のようだったとします(全4レコード):
【コード】 【品名】 【フラグ】
0 いちご True
1 りんご False
2 なし False
3 みかん True
(「フラグ」のデータ型はYes/No型とします)
このとき、
式1: DCount("*","テーブル1",[フラグ])
だと、クエリの各レコードで「フラグ」フィールドが評価されます。
そのため、「フラグ」がTrueのレコードでは「4」が、またFalseの
レコードでは「0」が、それぞれ表示されます。
(DCount関数は、第3引数の評価結果が「False(=0)」の
レコードは無視し、それ以外のレコードをカウントします)
一方、
式1: DCount("*","テーブル","[フラグ]")
にすると、「""」で括られているために、クエリでは文字列として
扱われるため、クエリ内での「フラグ」フィールドの値には依存
しなくなります。
その結果、(第2引数で指定した)「テーブル1」での「フラグ」が
評価され、「フラグ」がTrueになっているレコードの数(=2)を、
全てのレコードで返すことになります。
(なお、第3引数の「"[フラグ]"」は、Access上では
「"[フラグ]=True"」を指定したものとみなされるため、
上記のような結果になります)
> 演算子は""に入れないと駄目?
これも、式の結果が不正(=False)な場合、例えば
DCount("*","テーブル1",1=2)
のような条件を指定すると「0」しか返しませんし、
DCount("*","テーブル1",1=1)
のように式が成立(=True)する場合は全件数を返しますので、
式の内容次第、ということになるかと思います。
(ご提示の式では演算子がらみのエラーになるかと思いますが)
>「フラグ」がTrueのレコードでは「4」
[フラグ]フィールドのレコードが評価され
表示されるということですね。
>文字列として扱われるため
うーん・・・
文字列として扱われるとフィールド全体の評価になるのですかね
分かったような、分からないような。
ともかく回答ありがとうございました。
No.5
- 回答日時:
No.3,4です。
> コードは数値で第1引数は"コード"で問題ないようなので
> コードが文字だった場合、「*」ということでしょうか?
・・・すみません、また確認間違いをしていました(汗)
正しくは、第1引数に関係なく、コードがNullだった場合に、第3引数
での不正評価によってDCount関数の戻り値が「#エラー」となり、
抽出条件での「>1」の指定により『「#エラー>1」の正否』の不正評価
が発生することが原因でした。
大変失礼しました。
> 区切りの位置が今ひとつ分からないのですが・・・。
この件は、確かにややこしく、わかりやすい説明というのもしにくい
のですが・・・(汗)
データ型が「テキスト型」のフィールドを持つテーブルを元にクエリを
作成して、抽出条件を指定したことがあるかと思いますが、
その場合、指定したのが数値か文字列かに関わらず、抽出条件は
自動で「"」で括られます。
(数値型のフィールドの場合は、数値を指定すると括りは入らない)
DCount関数などの集計関数でも同様に、文字列の場合は条件を
「"」で括る必要があります。
ただ、第3引数は、通常は引数全体を文字列として指定するために
既に「"」で括られています。
そのため、「"」の代わりに「'」を使用します。
(なお、クエリの抽出条件でも、自動で追加される「"」の代わりに、
予め「'」で括りを指定してやることもできます:
検索したい文字列自体に「"」が含まれる場合に使ったりします)
例えば、『品名』フィールドが「筆記具」のものをカウントする場合は
DCount("*","テーブル","品名='筆記具'")
といった感じです。
(第3引数に「品名='筆記具'」という文字列式を指定している)
一方、今回のご質問のように、第3引数の右辺を、レコードの値で
変化させたいという場合は、「筆記具」の部分に、レコードごとの
フィールドの値が入るように、「品名='(フィールドの値)'」という形に
してやらなければなりません。
つまり、左側の「品名='」と右側の「'」は一定(文字列)で、真ん中
だけフィールドに従属、ということです。
そのため、
一定の文字列の部分は「"」で括り、
フィールドの値を使用するところは「[テーブル]![○○]」
といった形で指定してやることになります。
> "コード=" & '[テーブル]![コード]'
> では駄目だということですよね?
そうですね、この状態ですと、「[テーブル]![コード]」は「'」で括られて
しまっていますので、フィールドの値ではなく「[テーブル]![コード]」と
いう文字列が検索条件になってしまいます。
区切り位置を、感覚的にもう少しわかりやすくする、という意味では、
フィールドの値を括るのに使用する「'」を完全に別扱いにして、
「"コード=" & "'" & [テーブル]![コード] & "'"」
としてしまうのもいいかもしれません。
・・・参考になるとよいのですが・・・(汗)
この回答への補足
分かるような分からないような・・・
そもそも[]ではなく""でフィールドとテーブルを指定するのは
D関数の仕様なのですかね。
"コード="ではなく"コード"=とすると=が文字扱いになってしまう
と言う事なのですかね?
例えば
"コード" = & '"[テーブル]![コード]"'
では駄目なんですかね。
演算子は""に入れないと駄目?
それとこれはDCount("*","テーブル","品名='筆記具'")
DCount("品名","テーブル","品名='筆記具'")
でも問題ないですよね。
No.3
- 回答日時:
前回のご質問では、確認不充分で失礼致しました(汗)
http://oshiete1.goo.ne.jp/qa5196729.html
> 記述方法が良く分かりません。
No.1の方の回答の通り、『抽出条件』欄(クエリのデザインビューの下半分の
領域、『表示』のチェックボックスの下)に、直接「>1」を記入すればOkです。
(または「>=2」でもOk。1万件程度のレコードが入ったテーブルで簡単なテスト
をした限りでは、どちらでも速度に違いは見られませんでした:
有意差が見られるよう、10秒程度掛かるように反復処理させて確認)
但し、式の記述は「"コード=" & [テーブル]![コード]」で問題ありません。
※重複があるものの確認ということでしたら、『集計クエリ』を使用した方が
速度的には有利かと思いますので、よろしければ検討してみてください。
参考:
http://oshiete1.goo.ne.jp/qa5193921.html
この回答への補足
残念ながらそれでは、
コード=の構文エラー 演算子がありません。
不明。
とエラーメッセージが表示されます。
言われるように集計クエリ(カウント)ファイルを一つ作り
そのクエリを使い、結合プロパティで同じ行を求めるようにしました。
No.2
- 回答日時:
Sub test12()
MsgBox DCount("[個数]", "所持品", "[個数]>1")
End Sub
(確認済み)
例データ
所持品テーブル
ID氏名住所個数
1山田Å市3
2山田Å市0
3山田Å市1
4鈴木B市2
5鈴木B市3
6田中C村3
7田中C村1
8田中C村2
のような、"[個数]>1"の書き方になると思います。
結果 5
==
]![コード])がパラメータクエリを意図するなら、この関数中で[ ]では出来ないようです。
氏名をその都度指定したいならVBAで
Sub test11()
n = InputBox("名指定")
MsgBox DCount("[氏名]", "所持品", "[氏名]=" & Chr(39) & n & Chr(39))
End Sub
のようにすれば出来るようです。
この回答への補足
よく意味が分かりません。
具体的なフィールドをあげると
コード_ID
1_1
1_2
2_3
3_4
3_5
ここでコード1に関しては2つ
コード2に関しては1つなので抽出対象外←これが出来ない。
コード3に関しても2つ
サブクエリを使わなければ無理なのですかね・・・
よく分かりませんが。
No.1
- 回答日時:
式1の結果が2以上のものを抽出したいということでしょうか?
その場合、式1となっているのでクエリだと思うのですが、そうであれば、式1の抽出条件欄に >=2 と入力すればよいです。
ただし、式1の記述方法に問題があるようです。
記述は、
DCount("[フィールド名]","テーブル名","抽出条件") となり、
抽出条件は例えば[個数]フィールドが10以上のレコード数をカウントする場合は、 "[個数]>=10" と記述します。
抽出条件として、
"コード=" & [テーブル]![コード] は誤りになるかと思います。
その辺は割愛します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ちょっと先の未来クイズ第2問
9月9日(月)に発表される「第3回子どもマネー川柳」に入賞する川柳を考えてこちらに投稿してください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
【Access】Dcount関数の複数条件で順位を付ける方法について
Access(アクセス)
-
DCOUNT関数がなぜかカウントしない
Excel(エクセル)
-
AccessのDCOUNT関数のcriteria
Access(アクセス)
-
-
4
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
5
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
6
Dcout関数の条件式で空白を設定したい
Excel(エクセル)
-
7
アクセスのエラー「クエリには出力フィールドが1つ以上必要です。」
その他(Microsoft Office)
-
8
Null値件数をカウントする式について
その他(データベース)
-
9
Access Dcount関数で引数が指定できない
その他(プログラミング・Web制作)
-
10
AccessフォームのDcount複数条件
その他(Microsoft Office)
-
11
Access2003 クエリで、空の列は作れますか?
Access(アクセス)
-
12
アクセスVBAのMe!と[ ]
Access(アクセス)
-
13
「#エラー」の回避
Access(アクセス)
-
14
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
15
Accessで、フォームからフォームへ値を引き継ぐやり方
Access(アクセス)
-
16
Accessのフォーム上にレコード数とレコード番号の表示
その他(データベース)
-
17
Access 最後のレコードに到達するまでループ処理を行う方法
Access(アクセス)
-
18
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
19
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
20
アクセスで複数列にまたがる同一名義の個数を集計出来ますか?
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access vbaで重複レコードの削...
-
sql文で削除クエリを書く
-
ACCESS VBAでテーブル内の特定...
-
Access BetweenとLikeの組み合...
-
Accessリンクするテーブルが見...
-
抽出条件でデータ型が一致しま...
-
重複した複数のレコードを1レ...
-
ExcelマクロでAccessデータを累...
-
ODBCデータソースへの接続方法
-
VB.NET2003でOraclの情報を取得...
-
ACCESS DCOUNTの抽出条件について
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
findは動くがfindnextがマクロ...
-
月度は何て読みますか?
-
メルカリのメルカードで買い物...
-
エクセルVBAで、MsgBox やInput...
-
CloseとDisposeの違い
-
UPS警告音を止めたい
-
アクセスVBAのMe!と[ ]
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS DCOUNTの抽出条件について
-
データがあれば○○なければのSQL
-
Access vbaで重複レコードの削...
-
【access】複数のフィールドの...
-
ACCESS VBAでテーブル内の特定...
-
SQLServer→Access インポート
-
重複した複数のレコードを1レ...
-
アクセスで定数を利用したい。
-
抽出条件でデータ型が一致しま...
-
VBAでテーブル名とカラム名を動...
-
ACCESSで購入回数を表示する方...
-
別のaccessファイルからデータ...
-
Accessで縦と横を入れ替えたい
-
ACCESSで実行時エラー3008
-
Accessリンクするテーブルが見...
-
Access から Excelのシートをイ...
-
sql文で削除クエリを書く
-
オートナンバー型の数字を振り...
-
アクセスで連続データをテーブ...
-
ACCESSのクエリ、SQLに変数を使...
おすすめ情報