DataGridコントロールの行制御をするには?

解決


ぴこ  2007-07-12 02:58:09  No: 99177

VB6SP6にてDataGridを使用してアプリケーションを作成しています。
DataGridについて以下質問のご回答をよろしくお願い致します。

(1)DataGridへの最大表示レコード件数は最大で何件でしょうか?

(2)DataGridへDBより取得したレコードを表示する際に、
あらかじめ指定したレコード数以上は表示しないように制御可能でしょうか?

例)DataGridの最大表示数を100件に設定
DBより取得したレコードが200件の場合、最初の100件のみ出力

※DataGridはADO接続をしています。

以上、ご回答をよろしくお願い致します。


魔界の仮面弁士  2007-07-12 07:56:58  No: 99178

> (1)DataGridへの最大表示レコード件数は最大で何件でしょうか?
特に明示的な制限は無いと思いますよ。少なくとも実用的な範囲では。

試しに、下記のようなコードでチェックしてみましたが、
百万件のレコードも表示できましたし。(多すぎて操作しずらいですが…)

Private rs As ADODB.Recordset
Private Sub Form_Load()
    Set rs = New ADODB.Recordset
    rs.Fields.Append "TEST", adInteger
    rs.Open
    Dim L As Long
    For L = 1 To 1000000
        rs.AddNew "TEST", L
    Next
    Set DataGrid1.DataSource = rs
End Sub

> (2)DataGridへDBより取得したレコードを表示する際に、
> あらかじめ指定したレコード数以上は表示しないように制御可能でしょうか?
SQL 側で制限をかければ良いのではないでしょうか。
たとえば SQL Server / Jet / ACE なら、SELECT 時に TOP 句を指定するとかで。


ぴこ  2007-07-19 21:38:16  No: 99179

魔界の仮面弁士、ご回答ありがとうございます。

> 特に明示的な制限は無いと思いますよ。少なくとも実用的な範囲では。
今回のケースでは100万件のデータが表示できれば大丈夫です。
ご確認どうもありがとうございました。

> SQL 側で制限をかければ良いのではないでしょうか。
> たとえば SQL Server / Jet / ACE なら、SELECT 時に TOP 句を指定するとかで。
SQLで制限することは考えつきませんでした。
今回のケースではDBはOracleでTOP句は使用できないため、以下のようにして対応することにしました。

select * from TESTTABLE WHERE ROWNUM BETWEEN 1 AND 100

以上、ご回答どうもありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加