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

このQ&Aに関連する最新のQ&A

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を探す

このQ&Aと関連する良く見られている質問

Q[Oracle][IBM DB2][SQL Server]の違いと適性

現在、Accessで業務アプリケーションを作成しているのですが、そろそろパフォーマンス的にも限界で、というかC/S環境でAccessを使っていること自体危険ですね…

ここでデータベースをグレードアップしようと思っています。
しかし、データベースと言ってもたくさんあり、どれがいいのか
迷っています。

現在、商用RDBMSでは[Oracle][IBM DB2][SQL Server]がメインとの
ことですが、これらの違いが分かりせん。

うちの規模は社員数が40人程度です
Oracleは大規模システム向けと聞いた事があるのですが、
それであれば、IBM DB2かSQL Serverなのでしょうか

御教授宜しくお願いします。

Aベストアンサー

SEじゃないですけど、現状でどの辺りがボトルネックになっているかまず分析する必要がありますよ、案外ハード(サーバー本体)の方がいっぱいいっぱいてこともありますから、仮にHDDのディスクアクセスの場合シリコンディスクに置き換える、メインメモリの増設などがあります。逆にソフト側(MSアクセス)で同時接続多・同時更新多・データ肥大化の場合はやはりDBエンジンを変更するしかないでしょう。自社で開発するなら(情報量の多い)SQLServer。外注の場合は先方によって得手不得手がありますので一概には言えませんがオラクルでしょうこれしかないです(規模は関係なし)。DB2は使ったことがありません。他にもたくさんデータベースエンジンがありますので・・・

参考URL:http://ja.wikipedia.org/wiki/関係データベース管理システム

Q「[Microsoft][ODBC SQL Server Driver]COUNT フィールドが正しくありません。」えらーについて

おせわになります、

JavaからMSDEに対してSELECT UPDATE等の処理を行っているのですが。以下のSQLエラーが出てしまいます。
どのような意味なのでしょうか?
雰囲気としてはUPDATE文でおこっているような感じなのですが…

----エラーメッセージ------
[Microsoft][ODBC SQL Server Driver]COUNT フィールドが正しくありません。

よろしくお願いします。

Aベストアンサー

こんな情報がありましたという報告です。

「COUNT フィールドが正しくありません。」
で、検索をしたら同じような事例がありました。

2件ほどヒットしたのですが、どちらもテーブルのフィールド名を英数字にすることで解決しているようでした。

何故かというのは私にもわかりません。
お役に立つと良いのですが・・・

ちなみにヒットしたのは、「Goo」と「Google」です。
一度調べてみてください。(個人の情報っぽいのでURLは載せません。)

Q[Access2003]メイン・サブフォームの演算テキストボックス:『識別子』

メイン・サブフォームの演算テキストボックス:『識別子』についてよく分からないです。

「!」(識別子)の意味は、『ユーザー定義のオブジェクトやフィールドに付ける』とパソコン教室で教えてもらいました。
『オブジェクト』の言葉の意味が分からなかったので、マイクロソフトのホームページで調べてみました。『オブジェクト』の意味は多範囲でよく分からなかったです。
「!」(識別子)で使用する『オブジェクト』の言葉の意味を教えてもらえないでしょうか?Access初心者なので簡潔に教えてくださったら助かります。

Aベストアンサー

日本語はとても進んだ言語で「オブジェクト指向」なんです。
何故かと言うと、「画を見る」のように「目的語」(オブジェクト)を
先に言うからです。で、フォーム=画面があるとします。画面も1個
ではないから名前を付けますね。
Aという画面にはテキストボックス(X)とボタン(Y)があるとします。
ではボタン(Y)を指す時に何と言いますか?
「Aという画面の中にあるYというボタン」となるでしょう。
この「Aという画面」、「Yというボタン」がオブジェクトです。
そして、「の中にある」に相当する部分が「!」なんです。
実際にもForm_A!Button_Y みたいに記述します。
オブジェクトとは「物」です。画面と言うブツ、ボタンと言うブツ、
XXと言うブツ・・・ そんな漠然とした認識でいいのです。

Q[ACCESS][レポート]2列に印刷がしたい

ACCESSのレポートで、ひとつのテーブルの内容を、2列に印刷することは可能でしょうか?
たとえばA4ヨコの用紙で、印刷する項目が3つしかなかった場合、右に余白ができてしまうので、印刷する項目が用紙の下までいったら、次に右上からもう一列印刷をする、というようなことを実現したいのです。

Aベストアンサー

先日同じ質問に回答しました。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=250509

QAccess [SQL]月別ので最新日付取得方法

お世話になります。

Accessで顧客管理をしています。
【出力条件】
(1) 顧客IDごとに1月1レコード
(2) 同月内に顧客IDが2レコード以上ある場合は最新の購入日
(3) (2)が2レコード(同月内最新の購入日が2レコードある場合は、連番が多い方)

言葉でうまく説明できないのですが・・・

月 購入日 顧客ID  連番
--------------------------
04 2010/04/01 a-136 001
04 2010/04/09 a-136 001
04 2010/04/09 a-136 002
04 2010/04/10 b-991 001
04 2010/04/11 b-991 001
04 2010/04/11 b-991 002
04 2010/04/12 b-991 001
04 2010/04/13 b-991 001
05 2010/05/05 a-136 001
05 2010/05/13 e-991 001
05 2010/05/13 e-991 002
05 2010/05/30 s-333 001

このような表の場合、出力結果を

月 購入日 顧客ID
-----------------------
04 2010/04/09 a-136 002
04 2010/04/13 b-991 001
05 2010/05/05 a-136 001
05 2010/05/13 e-991 002
05 2010/05/30 s-333 001

のように出すクエリー(SQL文)を教えて頂けますでしょうか?
もし、クエリーが無理ならVBAでもよいのでどなたかご教示お願い致します。

お世話になります。

Accessで顧客管理をしています。
【出力条件】
(1) 顧客IDごとに1月1レコード
(2) 同月内に顧客IDが2レコード以上ある場合は最新の購入日
(3) (2)が2レコード(同月内最新の購入日が2レコードある場合は、連番が多い方)

言葉でうまく説明できないのですが・・・

月 購入日 顧客ID  連番
--------------------------
04 2010/04/01 a-136 001
04 2010/04/09 a-136 001
04 2010/04/09 a-136 002
04 2010/04/10 b-991 001
04 2010/04/11 ...続きを読む

Aベストアンサー

NOT EXISTSを使ってもよさそうです。

--全角でインデントしています
select * from 表 a
where not exists (
 select * from 表 b
 where a.顧客ID = b.顧客ID
 and a.月 = b.月
 and (a.購入日 < b.購入日 or (a.購入日 = b.購入日 and a.連番 < b.連番))
);
自レコードと顧客ID・月が同一で、購入日が後のデータor購入日が同一で連番が大きいレコード
が存在しないものという条件で取得します。


人気Q&Aランキング

おすすめ情報