プロが教えるわが家の防犯対策術!

access2000で受注管理をおこなっております。

フォームから条件を指定し,クエリでテーブルを検索し結果を表示している
のですが、データが多すぎて困っています。
そこでフォーム上から検索前に表示させる件数を指定する機能をつけたいと
考えています。
100件と指定したとすると、まず100件表示して次の100件を表示する、などの操作が
できればいいのですがやり方がわかりません。

せめて、表示件数に達すればあとの検索はしないといった表示件数を制限する
方法だけでも教えてください。よろしくお願いします。

A 回答 (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 にチェックを入れてください。

フォームをデザインモードにして、適当なオブジェクトを右クリックしてイベントのビルドをクリックするとそこに行けます。
不親切なコメントしかありませんが、ロジック的にはそんなに難しくないのですぐ理解できると思います。

ささっと作ったので、テキストボックスに何も入力されていないときとか、表示件数をオーバーしたときの処理を組み込んでいませんのでその辺は了承して下さい。
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます、分らないので機能自体放棄しておりました。エラー処理は自分で何とかできそうです、ありがとうございました.

お礼日時:2002/12/24 14:08

SQLビューでしたら



SELECT と フィールド名 の間に top ** と入れれば
その件数だけの検索ができます。
例えば、100件だけ検索の場合は次のようになります。

元のSQL
select 商品名, 単価
from 商品テーブル

修正後SQL
SELECT TOP 100 商品名, 単価
from 商品テーブル
    • good
    • 0

表示件数を制限するには表示したいクエリを開いてファイルの下のビューのアイコンの矢印をクリックするとSQLビューというのがあります。



SQLビューにすると現在表示されているSQL分が表示されますのでその文の最後のセミコロンを消去して、”WHERE 列の名前 BETWEEN 1 AND 100;”というのを追加するとその列の値が1~100までの行だけが表示されます。

最初の話を実現しようとすると今挙げた例で1と100の部分に変数を使用してプログラムで中身を替えていく必要があります。

ちょっと詳しい設計が分らないので今はこれだけのことしかいえませんが。
よかったでしょうか?

この回答への補足

有難うございます。最低限の表示制限はそれで大丈夫でした。
プログラムの知識が希薄なものでそれ以上のことができそうにないです。。。
検索結果の表示はサブフォーム内でデータシート形式で行っております。

補足日時:2002/12/13 13:04
    • good
    • 0

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