重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

[顧客]というテーブルに、[登録日付]というフィールドがあるとします。
検索フォームを作成し、そこに人数を入力するためのテキストボックスを配置します。
そして、この人数の数値(a)を使って、
[登録日付]の新しい方から a人を抽出するよい方法はありませんか。
出来れば、SQL文で作り、クエリーを作ってレポートを開いたり、
テキストなどにエクスポートしたいのですが。
なるべくコードがすっきりするようなものがいいのです。
よろしくお願いします。

A 回答 (3件)

select TOP 10 ...


の10の部分を可変にしたいんですよね。

私の力不足かもしれませんが、この部分はパラメータやフォームの値の参照が使えないと思います。

そこで、フォームにコマンドボタンを配置し、VBAで一時テーブルを作成するとよいと思います。
その後のレポートやエクスポートはこの一時テーブルを参照するようにします。

コマンドはしたのような感じですかね。
---------------------------------
Dim Ninzuu As Long
Dim strSQL As String

Ninzuu = Me![人数]

strSQL = "select top " & nunzuu & " * "
strSQL = strSQL & "Into [一時テーブル] "
strSQL = strSQL & "from [顧客] "
strSQL = strSQL & "ORDER BY [登録日付] DESC "

DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
-----------------------------------------
    • good
    • 0
この回答へのお礼

"TOP"というキーワードがあることは、知りませんでした。ありがとうございました。

お礼日時:2001/08/28 14:49

テーブル、クエリー、フォームは既知とします。


ポイントは下の3つです。
(1) フォームをコントロールソースを消します。
テキストも同じです。
(2)フォームウィザードでクエリーを開くボタンを作ります。
(2) クエリーの「登録日」ほ降順とし、「人数」の抽出条件を
(3) =[Forms]![F_顧客]![人数]とします。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2001/08/28 14:42

例えば10人の顧客テーブルの内容を出すなら下記のSQLかな?



SELECT_TOP_10_[顧客].*_FROM_[顧客]_ORDER_BY_[顧客].[登録日付]_DESC

注意:_はスペースの意味

なお、AccessのSQLのヘルプに記載されてますよ。
    • good
    • 0
この回答へのお礼

"TOP"というキーワードがあることは、知りませんでした。ありがとうございました。

お礼日時:2001/08/28 14:49

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

関連するカテゴリからQ&Aを探す