投稿日 | : 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