- ベストアンサー
アクセスで任意の件数を抽出するクエリでお知恵をお貸し下さい!
アクセス初心者です。 Win XP Access2002 フォーム上にあるテキストボックスに任意の数値を入力しておき、入力した任意の数分のレコードを抽出してくるクエリを組みたいのですが、知恵が不足して出来ません。 SQLでselect top [Forms]![フォーム名]![テキストボックス名] など試してみたのですがダメでした。 どなたかお知恵をお貸し下さい。 できれば、SQL分でやるよりクエリの抽出条件の式でできればとも思っております。 宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
TOP値も試してみたということは何かの順番に取り出せばいいのですね クエリで順位を求めるフィールドを作りそこの抽出条件に パラメータで取り出し数を与えるようにすればいいいのでは 順位:DCount("*","テーブル名","フィールド名<" & [フィールド名]) + 1 抽出条件 <=Forms!フォーム名!条件テキストボックス名
その他の回答 (2)
- CHRONOS_0
- ベストアンサー率54% (457/838)
クエリで式フィールドを作るだけです クエリデザインビューで言えば、フィールド欄に >順位:DCount~ を書き、そのフィールドの抽出条件欄に <=Forms!フォーム名!条件テキストボックス名 を書きます 教本でいえばクエリのところをよく勉強してください
お礼
ありがとうございます。 お蔭様で出来ました。 初心者にお付き合い頂き、ありがとうございました。
- O_cyan
- ベストアンサー率59% (745/1260)
#1の方が回答してありますが 順位:DCount("*","テーブル名","フィールド名<" & [フィールド名]) + 1 として抽出条件を <=Forms!フォーム名!条件テキストボックス名 ではそのままでは正しく抽出できない場合があります。 DCountを使ったフィールドから抽出する場合 フォームの抽出条件を入力するテキストボックスのプロパティで書式を[数値]にするかクエリ上で抽出条件を下記のように長整数型に変換すれば出来ます。 <=CLng([Forms]![フォーム名]![テキストボックス名]) とすれば抽出できます。 SQLも簡単です。SQLでは下記で同様になります。 SELECT テーブル名.*, DCount("*","テーブル名","フィールド名<" & [フィールド名])+1 AS 順位 FROM テーブル名 WHERE (((DCount("*","テーブル名","フィールド名<" & [フィールド名])+1)<=CLng([Forms]![フォーム名]![テキストボックス名])));
お礼
ありがとうございます。 お蔭様で解決できました。 ご丁寧な手ほどき、本当にありがとうございました。
お礼
早々のご回答ありがとうございます。 しかし、あまりにアクセス初心者で・・・ >クエリで順位を求めるフィールドを作りそこの抽出条件に >パラメータで取り出し数を与えるようにすればいいいのでは >順位:DCount~ の部分の意味が今の私には理解困難です。 いろいろアクセスの教本で調べてみたのですが、 どうもこれの意味を理解することができませんでした。 お手数ですが、ご教授願えませんでしょうか?