tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
データグリッドに表示されたデータをソートする(VB6.0) ( No.0 )  [親スレッドへ]
日時: 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




 [スレッド一覧へ] [親スレッドへ]