- ベストアンサー
ACCESSでこの抽出をするには・・・
「最新回(一番新しいレコード)から過去○○回まで」を抽出範囲にした 抽出条件を設定したいのですがうまく出来ません。 一応 Between [何回目から抽出?] and [最新回は?]で 抽出は出来るのですが やりたいのは、 片方の最新回(一番新しいレコード)を固定して 「過去何回分までさかのぼる?」だけを入力して抽出したいのですが・・・ これは可能でしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
No.3です。 >DMax("何日目","記録テーブル")-[過去何回分?] の先頭の">"も入力していますか? ここでは引用の">"ではありません。 (より大きい)を表す、比較演算子です。
その他の回答 (4)
横レスごめんなさい。 No.3のbonaronさんの回答でいけるはずですが、 ひょっとして、トップ値ボックスの値が 1 になってませんか? もしなってたら すべて にしてください。
補足
トップ値はすべてになってます 引用符と勘違いしたようです。
- bonaron
- ベストアンサー率64% (482/745)
[何日目]フィールドの抽出条件を >DMax("何日目","記録テーブル")-[過去何回分?] とします。
補足
>DMax("何日目","記録テーブル")-[過去何回分?] をやってみましたが 抽出できたのは 最新回から入力した[過去何回分?]を 引いたもの1つだけでした。 (最新回が300日目で[過去何回分?]を 10と入力したら291日目の記録のみ抽出されました。 この入力なら291日目~300日目の記録を 抽出できるようにしたいのですが・・・
- akipapa
- ベストアンサー率38% (34/89)
Betweenを使って、期待する結果が得られているということなので、Betweenの条件に使っているフィールドの型は数値ですか。 条件に使っているフィールドを「回数」とすると、条件は「回数>(最新回-さかのぼる回数)」ということで良いですか。「さかのぼる回数」は入力させるので、あと必要なのは「最新回」です。 レコードを追加するときに回数を入力するようにしている前提ですが、「最新回」はクエリで「回数」の最大値を求めることで取得できます。 最新回を求めるクエリの結果を抽出の条件に使うと出来ます。
補足
はい、Betweenの条件の型は数値です。 >条件は「回数>(最新回-さかのぼる回数)」 >ということで良いですか 最新回-さかのぼる回数の中の範囲を抽出したいです。 (最新回が300日目でさかのぼる回数を 100と入力したら201日目~300日目分を抽出する) 最新回は集計クエリの「最大」を使って 求められましたが そこから先で詰まりました。 Between [過去何回分?] And [回数の最大] だと 入力した[過去何回分?]=「何日目」フィールドの数字 になってしまいます。 最新回から入力した数値のぶんをさかのぼるには どうすればよいのでしょうか? 今作ってあるテーブルとクエリは下記の通りです ------------------------------ ・記録テーブル フィールド 何日目(数値型) 周った回数(数値型) 走った距離(数値型) ・最新回クエリ=「何日目」の最大値を出すクエリ ・検索クエリ=記録テーブルと最新回クエリを合わせました
「一番新しいレコード」とはどの列に判断するのでしょうか、それによっては出来たり出来なかったりします。 テーブルレイアウトが分からないと的確な回答はつかないと思います。 AccessもそうですがRDBではデータを追加した順番というのは保障されません。 連番のようなものが列としてあるなら簡単ですが、そういうものがないと面倒です。 順番を認識できる列が全くない場合は不可能です。
補足
すみません、説明不足でした。 毎日ランニングコースで何周 周ったかを記録するDBを作ります。 記録テーブル フィールド 何日目(数値型) 周った回数(数値型) 走った距離(数値型) 何日目 周った回数 走った距離 ------------------------------- 1 12 2400 2 12 2400 3 8 1600 何日目フィールドの数字で 最新回を判断したいです。
お礼
申し訳ありません 引用符と勘違いしていました。 回答していただいた通り 「>DMax("何日目","記録テーブル")-[過去何回分?]」で 抽出することが出来ました。 何度も回答していただきありがとうございました。