- ベストアンサー
access2000で検索、結果の表示件数制限
access2000で受注管理をおこなっております。 フォームから条件を指定し,クエリでテーブルを検索し結果を表示している のですが、データが多すぎて困っています。 そこでフォーム上から検索前に表示させる件数を指定する機能をつけたいと 考えています。 100件と指定したとすると、まず100件表示して次の100件を表示する、などの操作が できればいいのですがやり方がわかりません。 せめて、表示件数に達すればあとの検索はしないといった表示件数を制限する 方法だけでも教えてください。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
shu_bi_tさん、こんにちわ。標記の件はもう解決したでしょうか? 遅くなりましたが下にサンプルを書いておきます。 ここから------------------- Option Compare Database Option Explicit Dim gCNT As Long '表示番号の位置を保持する変数 '次の表示を行うコマンドボタンのイベント Private Sub cmdNext_Click() Dim db As DAO.Database Dim rs As DAO.Recordset Dim SQL As String 'T_商品のところは表示したいテーブル名です '商品IDのところはオートナンバー型の列名です txtKensu.SetFocus gCNT = gCNT + txtKensu.Text SQL = " SELECT * FROM T_商品 " & _ " WHERE 商品ID " & _ " BETWEEN " & gCNT - txtKensu.Text + 1 & _ " AND " & gCNT Set db = CurrentDb() Set rs = db.OpenRecordset(SQL) 'sub結果はサブフォームの名前です Set Me.sub結果.Form.Recordset = rs Set rs = Nothing Set db = Nothing End Sub '前の表示を行うコマンドボタンのイベント Private Sub cmdPrev_Click() Dim db As DAO.Database Dim rs As DAO.Recordset Dim SQL As String txtKensu.SetFocus gCNT = gCNT - txtKensu.Text SQL = " SELECT * FROM T_商品 " & _ " WHERE 商品ID " & _ " BETWEEN " & gCNT - txtKensu.Text + 1 & _ " AND " & gCNT Set db = CurrentDb() Set rs = db.OpenRecordset(SQL) Set Me.sub結果.Form.Recordset = rs Set rs = Nothing Set db = Nothing End Sub Private Sub Form_Load() '初期表示を空にする処理 '商品番号のところに好きな列名を入れてください Me.sub結果.Form.Filter = "商品番号 =''" Me.sub結果.Form.FilterOn = True End Sub Private Sub txtKensu_Change() '表示させたい件数を入力するテキストボックス gCNT = 0 End Sub ここまで---------------------------- 上のコードを実行させたいフォームのモジュールに書いてください。 それと、表示させたいテーブルにオートナンバー方の列を1つ追加して下さい。 あと、アクセスのVBEでツールバーの ツール→参照設定 を実行してMicrosoft DAO 3.6 Object Library にチェックを入れてください。 フォームをデザインモードにして、適当なオブジェクトを右クリックしてイベントのビルドをクリックするとそこに行けます。 不親切なコメントしかありませんが、ロジック的にはそんなに難しくないのですぐ理解できると思います。 ささっと作ったので、テキストボックスに何も入力されていないときとか、表示件数をオーバーしたときの処理を組み込んでいませんのでその辺は了承して下さい。
その他の回答 (2)
- ryuu001
- ベストアンサー率61% (46/75)
SQLビューでしたら SELECT と フィールド名 の間に top ** と入れれば その件数だけの検索ができます。 例えば、100件だけ検索の場合は次のようになります。 元のSQL select 商品名, 単価 from 商品テーブル 修正後SQL SELECT TOP 100 商品名, 単価 from 商品テーブル
- ssssssssss
- ベストアンサー率23% (24/103)
表示件数を制限するには表示したいクエリを開いてファイルの下のビューのアイコンの矢印をクリックするとSQLビューというのがあります。 SQLビューにすると現在表示されているSQL分が表示されますのでその文の最後のセミコロンを消去して、”WHERE 列の名前 BETWEEN 1 AND 100;”というのを追加するとその列の値が1~100までの行だけが表示されます。 最初の話を実現しようとすると今挙げた例で1と100の部分に変数を使用してプログラムで中身を替えていく必要があります。 ちょっと詳しい設計が分らないので今はこれだけのことしかいえませんが。 よかったでしょうか?
補足
有難うございます。最低限の表示制限はそれで大丈夫でした。 プログラムの知識が希薄なものでそれ以上のことができそうにないです。。。 検索結果の表示はサブフォーム内でデータシート形式で行っております。
お礼
ご丁寧にありがとうございます、分らないので機能自体放棄しておりました。エラー処理は自分で何とかできそうです、ありがとうございました.