プロが教える店舗&オフィスのセキュリティ対策術

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")

A 回答 (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://oshiete.goo.ne.jp/qa/6442713.html


【注意点】
<必須>
 ・「複数の抽出条件を満たす場合」を指定するのには、「And」又は
  「Or」を使用します。
  (上でも触れましたが、「&」は文字列を繋ぎ合わせるのに使用します)
 ・Accessの場合、等号・不等号・ブラス・マイナスであればそのまま
  数値などを続けても問題ありませんが、それ以外の演算子(「&」や
  「And」など)には、前後に「半角スペース」が必須になります。
  (Excelのワークシート関数とは仕様が異なりますのでご注意下さい)

<推奨>
 ・複数のテーブルやクエリを基にすることができるクエリと違い、DMin等
  の「定義域集計関数」では、第2引数にはただひとつの「テーブル」か
  「クエリ」しか指定できないので、第1引数でのテーブル名の指定は
  不要です。
  (正しく入力していればエラーにはなりませんが、間違えればエラーとなる
  ので、入れない方が間違いもなくなり手間も省ける、と)


・・・以上です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/04/30 01:16

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