MSFlexGridでソート

解決


  2005-09-09 20:39:50  No: 125101

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 21:46:04  No: 125102

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

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


花ちゃん  2005-09-09 22:01:13  No: 125103

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

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


  2005-09-12 20:49:22  No: 125104

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

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加