[リストへもどる]
一括表示

投稿時間:2003/04/16(Wed) 17:49
投稿者名:mitu
Eメール:
URL :
タイトル:
MSHFlexGridとMsFlexGridの差
ファイル比較で質問していたmituです。
宜しくお願いします。

下記のをMSHFlexGridとMsFlexGridで試しました。

With MSHFlexGrid1
    .Rows = 10000
    .Cols = 35
    For i = 1 To 9999
        For j = 1 To 34
            .TextMatrix(i, j) = i
        Next j
    Next i
End With
    
With MSHFlexGrid2
    .Rows = 10000
    .Cols = 35
    For i = 1 To 9999
        For j = 1 To 34
            .TextMatrix(i, j) = i
        Next j
    Next i
    For i = 50 To 5000
        .TextMatrix(i, 4) = 0
    Next i
End With

'比較
Dim Ro     As Long
Dim Co     As Long

MSHFlexGrid1.Visible = False
MSHFlexGrid2.Visible = False
With MSHFlexGrid1
    For Ro = .FixedRows To .Rows - 1
        For Co = .FixedCols To .Cols - 1
            If MSHFlexGrid2.TextMatrix(Ro, Co) <> .TextMatrix(Ro, Co) Then
                With MSHFlexGrid2
                    .Col = Co
                    .Row = Ro
                    .CellBackColor = vbRed
                End With
                With MSHFlexGrid1
                    .Col = Co
                    .Row = Ro
                    .CellBackColor = vbRed
                End With
            End If
        Next Co
    Next Ro
End With

結果は、
MsFlexGridの場合  12秒程度
MSHFlexGridの場合 43秒程度

でした。
MsFlexGridとMSHFlexGridで処理時間に違いがあると思うのですが。
よろしくお願いします。

投稿時間:2003/04/16(Wed) 19:22
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: MSHFlexGridとMsFlexGridの差
処理の前後に下記のコードを入れて試して見て下さい
    MSHFlexGrid1.Visible = False
    MSHFlexGrid2.Visible = False
    MSHFlexGrid2.Redraw = False
    MSHFlexGrid1.Redraw = False




    MSHFlexGrid1.Redraw = True
    MSHFlexGrid2.Redraw = True
    MSHFlexGrid1.Visible = True
    MSHFlexGrid2.Visible = True

私のテスト結果では 81秒から24秒に短縮できました
MSFlexGrid では効果がなく35秒でした

MSHFlexGrid の処理の方が今度は早くなりました。

投稿時間:2003/04/17(Thu) 10:03
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^2: MSHFlexGrid 比較計測結果
参考までに、(私のマシンはトロイので最新のはもっと早くなるはずです)

2358KB のCSVファイル(35列×9900行)のCSVファイルで計測

MSFlexGrid + DAO

  読込表示(2ファイル)  比較色付け

   40秒          20秒

MSHFlexGrid + ADO

    8秒          3.5秒


コードは前回のコードを使用して読込部分はADO用に変更
尚、ファイルの読込コードに付きましたは、No.3636 の投稿を見て下さい。
  但し、私も今回初めて使ったので間違ったところ等あるかも知れません
  その節は、お許しを。

投稿時間:2003/04/21(Mon) 10:55
投稿者名:mitu
Eメール:
URL :
タイトル:
Re^3: FixedRowsの保持
花ちゃんさん、ありがとうございます。

行数が多くても対応できますし、かなり早くなりました。
追加の質問で申し訳ありません。

FixedRows=1
FixedCols=1

で行っているのですが、実際データが、セル(0、1)の部分から
書かれているのですが、これを、CSVファイルの方には、手を加えずに、
セル(1、1)から表示するようにしたいのです。
FixedRowとFixedColを保持して表示したいのですが、
可能でしょうか?

調べてみたのですが、わからずでした。
よろしくお願いします。

投稿時間:2003/04/21(Mon) 14:11
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^4: FixedRowsの保持
> セル(1、1)から表示するようにしたいのです。
> FixedRowとFixedColを保持して表示したいのですが、

という事は、固定列と固定行には何も表示しない状態で読込みたいという事でしょうか?

なら、
読込む前に
    MSHFlexGrid1.FixedRows = 0
で一旦読込

    MSHFlexGrid1.AddItem " ", 0
先頭に1行追加して
    MSHFlexGrid1.FixedRows = 1
追加した行を固定行に変更します。

この場合、多分データの最初の行(項目行)は読込まれないので
それが不都合になる場合は メモ帳で下記のように記入したファイルを作成して下さい。

[test.CSV]
ColNameHeader=false


(先頭行を項目行として読込まない)

[]内のファイル名は読込むデータのファイル名に変更して下さい。
そしてファイル名を SCHEMA.INI としてデータの入っているフォルダに保存
して下さい。
後、SCHEMA.INI ファイルでは読込データ型の指定等もできます。詳しくは下記参照
http://www.akj.co.jp/aug/qa/ans0001-0050/0315.html

上記の方法を組み合わせたらできるかと思います。

投稿時間:2003/04/24(Thu) 11:14
投稿者名:mitu
Eメール:
URL :
タイトル:
Re^5: FixedRowsの保持
ありがとうございました。

なんとかできました。
また、よろしくお願いします。