VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2004/05/10(Mon) 19:27
投稿者魔界の仮面弁士
Eメール
URL
タイトルRe^4: データグリッドでのレコードの位置付け方法

> それなら、魔界の仮面弁士の方法でよいのではないでしょうか。
> ただ私がやると
> DataGrid1.FirstRow = RS.Bookmark
> の行で「ブックマークが不正です」となってしまうのですが、

私の環境では動作しました。(何故でしょうね?)
念のため、後述のコードを試して見てください。(VB6付属のNWIND.MDBを使用しています)


> DataGrid1.Bookmark = RS.Bookmark
> だけでも一番上に表示されます。
Bookmarkプロパティだけですと、例えば、
・1〜100までデータがあって、現在、60行目が選択されている。
・データグリッドの可視範囲には、30〜40行目が表示された状態。
の時に、60行目のBookmarkを渡しても、60行目までスクロールする事はありません。

しかし、FirstRowプロパティを指定した場合は、選択行がどこにあっても、
指定した行が最上段に表示されるようにスクロールされます。

# 逆に、FirstRowプロパティだけを指定した場合は、選択行は変化せず、
# スクロール位置だけが変化します。


===============================
Option Explicit

Private WithEvents gRS As ADODB.Recordset
Private Const Path As String = _
    "C:\Program Files\Microsoft Visual Studio\VB98\NWIND.MDB"

Private Sub Form_Load()
    Dim Cn As ADODB.Connection
    Set Cn = New ADODB.Connection
    Cn.CursorLocation = adUseClient
    Cn.Provider = "Microsoft.Jet.OLEDB.4.0"
    Cn.Open Path
    Set gRS = New ADODB.Recordset
    gRS.Open "Orders", Cn, adOpenStatic, adLockOptimistic, adCmdTable
    Set Cn = Nothing
    Set Me.DataGrid1.DataSource = gRS
    Me.DataGrid1.Refresh
End Sub

Private Sub Command1_Click()
    Dim RS As ADODB.Recordset
    Set RS = gRS.Clone(adLockReadOnly)
    RS.Find "OrderID>=10814"
    If Not RS.EOF Then
        'スクロール位置の指定
        Me.DataGrid1.FirstRow = RS.Bookmark
        '選択行の指定
        Me.DataGrid1.Bookmark = RS.Bookmark
    End If
    Set RS = Nothing
End Sub


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -