• ベストアンサー

AccessのDCOUNT関数のcriteria

yoishoの回答

  • yoisho
  • ベストアンサー率64% (331/516)
回答No.2

>詳しく解説してあるURL は、適当なものを見つけられなかったのですが・・・・・、 SQLで抽出条件を記述する際に注意すべきなのは、「データ型」です。 SQLは文字列式で記述しますので、数値型の値は文字列型として記述する(""内の文字列は、「"」ではなくて、「""」または「'」で囲む。数値型の変数は CSstr関数で文字列型に変換する。)。日付型の数値は「#」(日付リテラル)で囲む。などの操作が必要になります。 不慣れなうちは、クエリーのデザインビューで抽出条件を設定して、その SQLビューから WHERE 以降を取り出し、データ型を修正(「"」の使い方をチェック)すると良いのではないでしょうか? で、うまく抽出ができないときは、例えば VBAのモジュールウィンドウで、 Msgbox "抽出条件" と記述して実行させてみて、実際に Accessで(文字列として)どのように解釈されているかをチェックしてみると、構文の間違いが見つけやすいと思います。 まずは、HELPの質問(A)タブで、「文字列」で検索して「文字列内でのクォーテーション」、 「抽出条件」で検索して「抽出条件の指定」 をよく読んでみてください。

enako
質問者

お礼

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

関連するQ&A

  • Access DCOUNTの意味

    Access DCOUNTの意味 http://okwave.jp/qa/q3078359.html テーブルで重複があったものを除外したデータが欲しいと思い検索した結果上記のURLがヒットしました。 ページには、 Sum(1/DCount("*","TABLE1","ID='" & [ID] & "'")) という関数がありますが、ここの意味がわかりません。Dcountの意味は理解しました。 ただ、Sum(1/DCOUNT の意味がわかりません。 サイトに解説がかいてあるのですが・・・私には理解できません。 例えば、[ID]には001と002のIDコードがあるとします。 001には3レコード、002には2レコードあるとします。 DCOUNTで3という結果と2という結果を得られると思います。 よって、SUM(1/3 + 1/2) というように読み取れてしまいました。 上記だと2という値が取得したいのですが、私はどこを勘違いしているのでしょうか?

  • AccessのDcount関数の条件

    AccessのDcount関数に設定する条件ですが Switch関数やIIFなどは使用でじるのでしょう。 また、クエリ(select ~)も書くことができるのでしょうか。 設定できる場合は、どの様に記述すればよいのでしょうか。

  • Access Dcount関数で引数が指定できない

    ACCESSのVBAで社内システムを作っています。 Dcount関数の引数1であるフィールド名を指定すると、下記のようなエラーが出てしまいます。 「クエリ式'Count(2A)'の 構文エラー:演算子がありません。」 色々切り分けして以下のような法則を見つけました。 ・フィールド名が数字のみの場合→使用できる ・フィールド名の先頭が数字以外の場合→使用できる ・フィールド名の先頭が数字(全半角共に)の場合→エラー発生 全社システムからACCESSにインポートするデータのフィールド名が「2A」「3A」などの商品コードになっているためこのまま使用したいのですが、手段はありますでしょうか。 ■使用しているツール Microsoft Office Access 2007 よろしくお願いします。

  • 関数の使い方SUMPRODUCT?DCOUNT?

    エクセルの関数の使い方についてアドバイスをお願いいたします あるシート(仮にSheetAとする)において B列にあるデータの任意の文字(仮にCとする。文字位置は固定ではない)であって、且つ D列にあるデータの任意の文字(仮にEとする。文字位置は固定ではない)の双方を満たすセルの数を数えて、さらにその結果は同じファイルの中にある別のシート(仮にSheetFとする)に表したいと思います これについては関数SUMPRODUCTと関数FINDを使って導きたいと考えておりました。 =SUMPRODUCT(ISNUMBER(FIND("C",B1:B100))*ISNUMBER(FIND("E",D1:D100))) として同じシート上に結果を表すことはできたのですが、別シートに表すところで、 つまづいてしまいました(おそらく初歩的なミスと思うのですが・・・。) 別のシート名を表す部分をどこに入力したらいいのかアドバイスいただきたく お願いいたします それとも別の関数(DCOUNTなど)を使用したほうがよりベストなのか迷っています DCOUNTの使い方も精通しておらず苦慮しております 調べてみましたが前例を見つけだす事ができませんでした 簡単なことでしたらすみません エクセル2003です どうぞアドバイスのほど よろしくお願いいたします

  • アクセスのD○○関数について

    アクセスのD○○関数 (DCountなどDから始まる関数) は、(expr, domain, [criteria]) となっていますが、 expr→フィールド名 domain→テーブル名 で フィールド名は[]と""で囲わなくてはならなくて ("[日付]"など) フィールド名は[]は付けちゃいけないけど""で囲わなくちゃいけない。 という認識で合っていますか? よろしくお願いします。

  • DCount 0が返ります。

    アクセスvbaで テーブルで該当の文字を抽出後のレコードの数を取得するしたいのですが 数 = DCount("[番号]", "T全て", "[分類] = '" & str分類 & "'") 数 = DCount("*", "T全て", "[分類] = '" & str分類 & "'") どちらも0が返ります。 str分類には、分類フィールドに必ず存在する文字列が入っています。 手作業でテーブルにフィルタをすると ちゃんとレコード数が見えるのですが DCountの何が間違ってるのでしょうか?

  • Access:Dcount関数

    Access:Dcount関数 の使用方法について質問です。 テーブル作成クエリで新規フィールドに通し番号として新たに連番を打ちたいのですが、 No: DCount("番号","情報一覧","[番号]<=" & [情報一覧]![番号]) このようにした場合に結果は10,13,15,19のようにとびとびの番号しか出てきませんでした。 関数を誤って理解してるものとは思うのですがどうおかしいのかがよくわからず; 「番号」は連番ではなく、重複ないIDです。 よろしく御教授ください。

  • DCOUNT関数がなぜかカウントしない

    DCOUNT関数を使って顧客のデータから来店回数を抽出しようとしているのですが、エラーは出ないのですが、なぜかどの客も来店回数が0なのです。 顧客データがにはちゃんと来店日、売上などがかいていあるのですけど… DCOUNT関数のdatabaseに顧客の全データ(顧客の来店などのデーターを含む)のシート全体を指定して、フィールドに「ID番号」(顧客の)の列を指定して、クリテリアには集計するID番号の顧客ID番号を入力しています。 数字は出てくるんですが、どの顧客も来店回数0です。 エクセル2000を使っています。 なぜ、うまく計算されないのかさっぱり分かりません。 よろしくお願いします。

  • ACCESS2000でDCount関数の使い方

    ACCESS2000で更新クエリの質問です。 先日同様の質問をさせていただきましたが、その後うまくできないところがあったので再度質問させていただきました。 内容は、フィールドの値のカウントを集計し、更新クエリを使用してデータを更新するという内容です。 前回の質問でDCount関数を用いて下記のとおり実行するとできるとのことでしたが、条件が複数ある場合どのように記述すれば いいのかを教えて下さい。 条件は、 (1)年月 =Aテーブル.年月 (2)コード=Aテーブル.コード (3)区分 =Aテーブル.区分 <こんな感じで実行しようとしたのですがうまく動きません> UPDATE Bテーブル SET" カウント数1 = DCount('区分','Aテーブル','[A年月]=[B年月] And [Aコード]=[Bコード] And [A区分]='001'') カウント数2 = DCount('区分','Aテーブル','[A年月]=[B年月] And [Aコード]=[Bコード] And [A区分]='002'') やりたいことは下記のとおりです。Aテーブルを集計しBテーブルの個数にAテーブルの個数の合計値を更新する。 <Aテーブル> A年月  Aコード A区分      200807  9991   001 200807  9991   001 200807  9991   001 200807  9991   002 200807  9991   002 <Bテーブル> B年月  Bコード Bカウント数1  Bカウント数2 200807  9991        0       0 ↓↓↓更新後 <結果:Bテーブル>   B年月  Bコード Bカウント数1  Bカウント数2 200807  9991        3       2              ↑       ↑    (Aテーブルの区分='001'  (Aテーブルの区分='002'     を集計した結果)       を集計した結果)

  • アクセスの関数で

    アクセスの関数で エクセルのFINDに該当する関数はありますでしょうか? あるテーブルの文字列の/の文字を探したいのですが エクセルならFIND関数でokなのでそのまま使えるかと思ったんですがアクセスでは使えないようで アクセスで特定文字を探しだし その桁数を出したいのですがわかりましたらお願いいたします。