• ベストアンサー

ACCSESS2000での検索

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

質問者が選んだベストアンサー

  • ベストアンサー
  • stork
  • ベストアンサー率34% (97/285)
回答No.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 -----------------------------------------

maruru01
質問者

お礼

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

その他の回答 (2)

  • ojinojin
  • ベストアンサー率0% (0/1)
回答No.2

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

maruru01
質問者

お礼

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

  • yanmaa
  • ベストアンサー率45% (207/457)
回答No.1

例えば10人の顧客テーブルの内容を出すなら下記のSQLかな? SELECT_TOP_10_[顧客].*_FROM_[顧客]_ORDER_BY_[顧客].[登録日付]_DESC 注意:_はスペースの意味 なお、AccessのSQLのヘルプに記載されてますよ。

maruru01
質問者

お礼

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

関連するQ&A

専門家に質問してみよう