- ベストアンサー
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")
- みんなの回答 (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引数でのテーブル名の指定は 不要です。 (正しく入力していればエラーにはなりませんが、間違えればエラーとなる ので、入れない方が間違いもなくなり手間も省ける、と) ・・・以上です。
お礼
非常に詳細な回答をいただきありがとうございました。本当に勉強になりました。これを足がかりにいろいろ試してみたいと思います