• ベストアンサー

ACCESSのクエリ計算

Access2003でクエリで特定条件に一致するIDを出して 今度はそのそれぞれのIDから+100(IDが2なら2~102の範囲でというように)の元のテーブルの 値の中からフィールド1が5以上の条件に一致するものの最小のIDをもとめたいと思ってます。 始めたばかりの初心者です DMINでできるのかなと思って下記式にしてみたのですが パラメーターエラーでうまくいかなくて、、 DMin("[テーブル1].ID","[テーブル1]","[テーブル1].ID>=[クエリ1].ID&[ID]<[クエリ1].ID+100&[テーブル1]フィールド2>5")

質問者が選んだベストアンサー

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.1

すみません、「今後のための留意点」に触れていたら、長文になってしまい ました・・・(汗) クエリのデザインビューで、『フィールド:』欄に指定する式ということでしたら、 恐らく以下の式で、意図する結果が得られるのではないかと思います。 (ただ、私が「こうして得た最小IDの使用目的」を推測できていないので、  意図を汲み取り間違えていましたら、申し訳ありません(汗)) 式: DMin("[ID]","テーブル1","[ID]>=" & [ID] & " And [ID]<=" & [ID]+100 & " And [フィールド2]>5") (これで、クエリ上で「ID=1」のレコードでは、  DMin("[ID]","テーブル1","[ID]>=1 And [ID]<=101 And [フィールド2]>5") という式として演算されることになります) 【式の説明】 DMin関数の第3引数で、「"」(ダブルクォーテーション)で括られた中に 指定できるのは、「第2引数で指定したテーブルのフィールド」か「定数」 (数値または文字列)、及び「『Forms!フォーム名!コントロール名』のような 形で指定したフォームのコントロール」(「Reports!~」とすればレポートも 可)だけです。 クエリのデザインビューで使用して、「第2引数で指定したテーブル・クエリ」 ではなく、「クエリ内で指定したテーブル・クエリ」のフィールドを参照する 場合は、「"」の括りの外(そと)に出してやる必要があります。 (その上で、「『"』で括った部分」と「括りの外側」を合わせてひとつの式に  するために、「&」を使用します) 一応、下記の過去のQ&Aを参考までに挙げておきます: http://okwave.jp/qa/q6442713.html 【注意点】 <必須>  ・「複数の抽出条件を満たす場合」を指定するのには、「And」又は   「Or」を使用します。   (上でも触れましたが、「&」は文字列を繋ぎ合わせるのに使用します)  ・Accessの場合、等号・不等号・ブラス・マイナスであればそのまま   数値などを続けても問題ありませんが、それ以外の演算子(「&」や   「And」など)には、前後に「半角スペース」が必須になります。   (Excelのワークシート関数とは仕様が異なりますのでご注意下さい) <推奨>  ・複数のテーブルやクエリを基にすることができるクエリと違い、DMin等   の「定義域集計関数」では、第2引数にはただひとつの「テーブル」か   「クエリ」しか指定できないので、第1引数でのテーブル名の指定は   不要です。   (正しく入力していればエラーにはなりませんが、間違えればエラーとなる   ので、入れない方が間違いもなくなり手間も省ける、と) ・・・以上です。

xnatsurou
質問者

お礼

非常に詳細な回答をいただきありがとうございました。本当に勉強になりました。これを足がかりにいろいろ試してみたいと思います

すると、全ての回答が全文表示されます。

専門家に質問してみよう