[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2007/05/07(Mon) 15:20
投稿者名:こう
Eメール:
URL :
タイトル:
データグリッドのソート
お世話になります。

VB6.0にてデータをデータグリッドに表示させています。VB2003やVB2005のようにデーダグリッドに
表示されたデータをソートすることは出来ないのでしょうか?SQLは使用しないで実現したいです。



NO    名前     登録日
01     ああ     2007/05/01
20     なな     2007/05/07
09     いい     2007/04/20
04     たた     2007/02/24

NOでソート
01     ああ     2007/05/01
04     たた     2007/02/24
09     いい     2007/04/20
20     なな     2007/05/07

登録日でソート
04     たた     2007/02/24
09     いい     2007/04/20
01     ああ     2007/05/01
20     なな     2007/05/07

よろしくお願い致します。

投稿時間:2007/05/07(Mon) 15:40
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: データグリッドのソート
> 表示されたデータをソートすることは出来ないのでしょうか?

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

投稿時間:2007/05/07(Mon) 17:04
投稿者名:こう
Eメール:
URL :
タイトル:
Re^2: データグリッドのソート
魔界の仮面弁士様。
コードありがとうございます。
まさにやりたいことそのままでした!

投稿時間:2007/05/07(Mon) 15:57
投稿者名:シュウ
Eメール:
URL :
タイトル:
Re: データグリッドのソート
> お世話になります。
>
> VB6.0にてデータをデータグリッドに表示させています。VB2003やVB2005のようにデーダグリ
ッドに
> 表示されたデータをソートすることは出来ないのでしょうか?SQLは使用しないで実現したい
です。

VB6.0でもデータグリッド内でソートできたと思いますよ。

投稿時間:2007/05/07(Mon) 17:05
投稿者名:こう
Eメール:
URL :
タイトル:
Re^2: データグリッドのソート
> VB6.0でもデータグリッド内でソートできたと思いますよ。

シュウ様。
コメントありがとうございます。
データグリッド内でソートできるのですか?
解決はしましたが、その方法も調べてみたいと思います。

投稿時間:2007/05/07(Mon) 23:15
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^2: データグリッドのソート
> VB6.0でもデータグリッド内でソートできたと思いますよ。

あれ。DataGrid でもソートできましたっけ?
(MSHFlexGrid なら、Sort プロパティがありますけど)


DataGrid の HeadClick イベントの[使用例]で、SQL 再発行による並び替えが
行われているところを見ると、コントロール側の機能としては用意されていないかも。

http://msdn.microsoft.com/library/en-us/DBGrid98/html/daevtHeadClick.asp
http://msdn.microsoft.com/library/en-us/DBGrid98/html/daevtheadclickx.asp

投稿時間:2007/05/08(Tue) 11:09
投稿者名:シュウ
Eメール:
URL :
タイトル:
Re^3: データグリッドのソート
> > VB6.0でもデータグリッド内でソートできたと思いますよ。
>
> あれ。DataGrid でもソートできましたっけ?
> (MSHFlexGrid なら、Sort プロパティがありますけど)
>
>
> DataGrid の HeadClick イベントの[使用例]で、SQL 再発行による並び替えが
> 行われているところを見ると、コントロール側の機能としては用意されていないかも。
>
> http://msdn.microsoft.com/library/en-us/DBGrid98/html/daevtHeadClick.asp
> http://msdn.microsoft.com/library/en-us/DBGrid98/html/daevtheadclickx.asp

あ、MSHFlexGridとごっちゃになってたかも…。
無かったならすみません。