データ入力方法とパフォーマンスの違い
対象製品
El Tabelle MultiRow 4.0J
詳細
El Tabelle MultiRow 4.0J はいくつかのデータ入力方法を備えていますが、データ入力方法によってパフォーマンスに違いがあります。
本FAQ記載のパフォーマンスの向上方法については、製品ヘルプ(SP6以降)の次の項で確認できます。
[MultiRow 4.0J の使い方]
- [シートの操作]
- [パフォーマンス向上のヒント]
最新の修正版はこちらから入手できます。
データ入力方法によるパフォーマンスの違い
MultiRowSheet1[0, 0, 0].Value = "テスト" のように、データを直接 Value プロパティに指定する方法よりも、データベースとの連結 を使用する方が、データ入力の時間を短縮できます。 データベースエンジンを使用しない場合でも、DataSet を作成してこれにデータを入力しバウンドすることで大量のデータ入力にかかる時間を節約できます。また、仮想モードもデータ入力時間の短縮に有効な方法です。ただし、仮想モードの使用には幾つかの注意事項があります。データ連結方法、仮想モードの使用については製品ヘルプをご参照ください。
データ入力時のパフォーマンス向上方法について、次項以降で説明します。
再描画を抑止する
データ入力中は再描画処理を停止し、データ入力後に再描画することでパフォーマンスを向上させることができます。
MultiRowSheet1.Redraw = False
'TODO: データの入力処理
MultiRowSheet1.Redraw = True
数式の再計算を停止する
El Tabelle MultiRow 4.0J は数式が依存するセルの内容が変更されたときにシート内の数式を再計算します。これは、シートの情報を常に最新の状態に保つためです。
しかし、コードによるデータの入力や数式の設定など、必ずしもシートの情報を更新しなくて良いケースもあります。また、データを全て入力後にその合計を計算する場合などは、データが入力される毎に再計算するよりも、全てのデータ入力後に一度だけ再計算した方が効率的です。
このようなケースでは、数式の再計算を一時的に停止することでデータ入力や数式設定の速度を改善できます。
MultiRowSheet1.AutoCalculate = False
'TODO: データの入力処理や数式の設定
MultiRowSheet1.AutoCalculate = True
'必要であれば、数式の計算を実行する
MultiRowSheet1.Calculate()
既定値の入力を停止する
テンプレートのセルに値が入力されている場合、この値が新規行の既定値として使用されます。MultiRowSheet.MaxMRowsプロパティを変更するなどして、マルチ行を追加した場合、行を追加した時点で既定値が入力されます。追加行に対して既定値以外の値を入力する場合は、マルチ行追加前に、MultiRowSheet.UseDefaultData プロパティ を使用して一旦既定値を無効にすることで、既定値の入力を抑止し効率的なデータ入力ができます。
MultiRowSheet1.UseDefaultData = False
'TODO: マルチ行を追加
'TODO: データの入力処理
MultiRowSheet1.UseDefaultData = True
テンプレートの参照回数を減らす
マルチ行のセルにテンプレートのセル情報を再設定したい場合など、テンプレートの情報を何度も参照する必要がある場合は、テンプレートへの参照をローカル変数に待避することで速度を改善できます。
'サンプルコード
Dim template As Template = Me.MultiRowSheet1.Template
For i As Integer = 0 To template.Cells.MaxColumns - 1
For j As Integer = 0 To template.Cells.MaxRows - 1
Dim tCell As TCell = template.Cells(i, j)
Dim mCell As MCell = Me.MultiRowSheet1(0, i, j)
mCell.BackColor = tCell.BackColor
mCell.ForeColor = tCell.ForeColor
Next
Next
本FAQ記載のパフォーマンスの向上方法については、製品ヘルプ(SP6以降)の次の項で確認できます。
[MultiRow 4.0J の使い方]
- [シートの操作]
- [パフォーマンス向上のヒント]
最新の修正版はこちらから入手できます。
データ入力方法によるパフォーマンスの違い
MultiRowSheet1[0, 0, 0].Value = "テスト" のように、データを直接 Value プロパティに指定する方法よりも、データベースとの連結 を使用する方が、データ入力の時間を短縮できます。 データベースエンジンを使用しない場合でも、DataSet を作成してこれにデータを入力しバウンドすることで大量のデータ入力にかかる時間を節約できます。また、仮想モードもデータ入力時間の短縮に有効な方法です。ただし、仮想モードの使用には幾つかの注意事項があります。データ連結方法、仮想モードの使用については製品ヘルプをご参照ください。
データ入力時のパフォーマンス向上方法について、次項以降で説明します。
再描画を抑止する
データ入力中は再描画処理を停止し、データ入力後に再描画することでパフォーマンスを向上させることができます。
MultiRowSheet1.Redraw = False
'TODO: データの入力処理
MultiRowSheet1.Redraw = True
数式の再計算を停止する
El Tabelle MultiRow 4.0J は数式が依存するセルの内容が変更されたときにシート内の数式を再計算します。これは、シートの情報を常に最新の状態に保つためです。
しかし、コードによるデータの入力や数式の設定など、必ずしもシートの情報を更新しなくて良いケースもあります。また、データを全て入力後にその合計を計算する場合などは、データが入力される毎に再計算するよりも、全てのデータ入力後に一度だけ再計算した方が効率的です。
このようなケースでは、数式の再計算を一時的に停止することでデータ入力や数式設定の速度を改善できます。
MultiRowSheet1.AutoCalculate = False
'TODO: データの入力処理や数式の設定
MultiRowSheet1.AutoCalculate = True
'必要であれば、数式の計算を実行する
MultiRowSheet1.Calculate()
既定値の入力を停止する
テンプレートのセルに値が入力されている場合、この値が新規行の既定値として使用されます。MultiRowSheet.MaxMRowsプロパティを変更するなどして、マルチ行を追加した場合、行を追加した時点で既定値が入力されます。追加行に対して既定値以外の値を入力する場合は、マルチ行追加前に、MultiRowSheet.UseDefaultData プロパティ を使用して一旦既定値を無効にすることで、既定値の入力を抑止し効率的なデータ入力ができます。
MultiRowSheet1.UseDefaultData = False
'TODO: マルチ行を追加
'TODO: データの入力処理
MultiRowSheet1.UseDefaultData = True
テンプレートの参照回数を減らす
マルチ行のセルにテンプレートのセル情報を再設定したい場合など、テンプレートの情報を何度も参照する必要がある場合は、テンプレートへの参照をローカル変数に待避することで速度を改善できます。
'サンプルコード
Dim template As Template = Me.MultiRowSheet1.Template
For i As Integer = 0 To template.Cells.MaxColumns - 1
For j As Integer = 0 To template.Cells.MaxRows - 1
Dim tCell As TCell = template.Cells(i, j)
Dim mCell As MCell = Me.MultiRowSheet1(0, i, j)
mCell.BackColor = tCell.BackColor
mCell.ForeColor = tCell.ForeColor
Next
Next
この文書は、以前は次のFAQ IDで公開されていました : 11043