- 日時: 2007/09/16 11:11
- 名前: 花ちゃん
- ***********************************************************************************
* カテゴリー:[データベース][グリッド関係][] * * キーワード:データグリッド,並べ替え,ソート,,, * ***********************************************************************************
元質問:データグリッドのソート - こう 2007/05/07-15:20 No.9098 VB6.0にてデータをデータグリッドに表示させています。VB2003やVB2005のようにデータグリッドに表示されたデータをソートすることは出来ないのでしょうか?SQLは使用しないで実現したいです。
----------------------------------------------------------------------------------- Re: データグリッドのソート - 魔界の仮面弁士 2007/05/07-15:40 No.9100 ----------------------------------------------------------------------------------- > 表示されたデータをソートすることは出来ないのでしょうか?
DataGrid に表示させている Recordset オブジェクトの、Sort プロパティを使うとか。
=== 簡易コード ===
Private Sub DataGrid1_HeadClick(ByVal ColIndex As Integer) rs.Sort = DataGrid1.Columns(ColIndex).DataField End Sub
=== 少しだけ汎用化 ===
Private Sub DataGrid1_HeadClick(ByVal ColIndex As Integer) Call SortDataGridByColumn(DataGrid1, ColIndex) End Sub
Public Sub SortDataGridByColumn(ByVal dg As MSDataGridLib.DataGrid, ByVal ColIndex As Integer) Dim DataSource As Object Set DataSource = dg.DataSource Dim RS As ADODB.Recordset If DataSource Is Nothing Then '未設定 Set RS = Nothing ElseIf TypeOf DataSource Is ADODB.Recordset Then 'Recordset Set RS = DataSource ElseIf dg.DataMember = "" Then 'ADODC Set RS = DataSource.Recordset Else 'DataEnvironment Set RS = DataSource.Recordsets(dg.DataMember) End If
If Not RS Is Nothing Then Dim bmk As Variant If RS.Supports(adBookmark) Then bmk = dg.Bookmark Else bmk = Empty End If RS.Sort = dg.Columns(ColIndex).DataField If Not IsEmpty(bmk) Then dg.Bookmark = bmk End If End If End Sub
|