2009-03-24 9 views
1

私は現在Excelワークシートからデータを読み取り、MSFlexGridに吐き出すというVB6プログラムを持っています。VB6 - MSFlexGridでマルチレベルのソートを行うには?

以下は、読み取られたExcelシートデータです。テーブルの左半分の発生列にデータが入力されます。

http://www.dipzo.com/initial.PNG

VB6アプリケーション次いでフレキシブルグリッドオブジェクトに供給される多次元配列に、このデータを読み取ります。ここ はそれを行うためのコードです:

Private Sub GridSort(temp() As String) 
fgData.Rows = UBound(temp) 
x = 0 
Do While x < fgData.Rows 
    fgData.Row = x 
    fgData.Col = 0 
    fgData.Text = temp(x, 0) 
    fgData.Col = 1 
    fgData.Text = temp(x, 1) 
    x = x + 1 
    Loop 
    fgData.ColSel = 1 
    fgData.Sort = flexSortGenericDescending 
    x = 0 
    Do While x < fgData.Rows 
    fgData.Row = x 
    fgData.Col = 0 
    temp(x, 0) = fgData.Text 
    fgData.Col = 1 
    temp(x, 1) = fgData.Text 
    x = x + 1 
    Loop 

End Sub 

今これは程度に動作します。しかし、あなたはそれが最初の列の順序を台無しにすることを見ることができます

http://www.dipzo.com/end.PNG

:それはとてもとして発生箇所および出力によってデータをソートします。最初にデータをソートしたいのですが、同じ量のデータがある場合は、そのデータを操作でソートする必要があります。誰かがこれを達成する方法を知っていますか?

答えて

1

MSFlexGridは、列を左から右にソートし、常に同じ順序(降順/昇順)で並べ替えることで、複数の列のデータを並べ替えています。だから、あなたはあなたの目標を達成するために列 "発生"と "操作"を交換することができます。

Elsewhise、here MSFlexGrid関数の素敵なコレクションがあり、マルチカラムソートのエントリも1つあります。 「複数の列を並べ替える」という項目を探します。それを試していませんでしたが、試してみることができます。