MSFlexGridでソート

解決


 2005-09-09 11:39:50  No: 125101  IP: [192.*.*.*]

MSFlexGridのソートに関してです。
以下の質問と同じだと思うのですが、どうしても上手く動作しません。
よろしくお願いします。

http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200311/03110038.txt

期待の動作は、例えば3列目の昇順ソートをかけたとき
3>1>2>4 の順で並び替えを行いたいです。


 Dim i As Integer
    Dim intCol As Integer
    Dim intSort As Integer
    
' 合計4列 ソート対象項目をチェックボタン形式で選択
    For i = 0 To 3
        If chkCol(i).Value = True Then
            intCol = i + 1
            Exit For
        End If
    Next i
    
' 昇順か降順を選択
    For i = 0 To 1
        If chkSort(i).Value = True Then
            intSort = i + 1
            Exit For
        End If
    Next i
    
' 一列目は日時なため一般的なソートではなく文字列ソートに変換
    If intCol = 1 And intSort = flexSortGenericAscending Then intSort = flexSortStringAscending
    If intCol = 1 And intSort = flexSortGenericDescending Then intSort = flexSortStringDescending
    
    With grdLogDisp
        .Col = 1
        .ColSel = intCol + 1
        .Sort = intSort
     
        .Row = 1
        .Col = 1
        .TopRow = 1
    End With

編集 削除
花ちゃん  2005-09-09 12:46:04  No: 125102  IP: [192.*.*.*]

>3>1>2>4 の順で並び替えを行いたいです。
MSFlexGrid では上記のようなソートはできません。
どうしてもなら、一旦  >3>1>2>4  のように列を挿入して
並び替えるキーをその列にコピーしてからソート後、挿入した列を
削除するようにして下さい。

http://www.bcap.co.jp/hanafusa/VBHLP/Sampleitiran.htm
No.365  参照

編集 削除
花ちゃん  2005-09-09 13:01:13  No: 125103  IP: [192.*.*.*]

>>3>1>2>4 の順で並び替えを行いたいです。
>MSFlexGrid では上記のようなソートはできません。

上記を訂正させて頂きます。
カスタムソートをすればできますが、私の過去のテスト結果では
列を一時挿入してソートする方が処理速度が速かったので、前記の
方法を提案しました。
http://www.bcap.co.jp/hanafusa/logbbs/wforum.cgi?mode=allread&no=6818

編集 削除
 2005-09-12 11:49:22  No: 125104  IP: [192.*.*.*]

返答遅れてもうしわけありません。
今、私が扱っているものはデータの量が多くないので

>並び替えるキーをその列にコピーしてからソート後、挿入した列を
>削除するようにして下さい。

こちらの方法を取らせて頂きました。
花ちゃんさんアドバイスありがとうございました。

編集 削除