作成日: 2019/09/26 最終更新日: 2021/05/26
文書種別
不具合
状況
修正済み
詳細
DataTableなどのデータソースと連結した状態でSPREADのResetメソッドを実行し、その後でデータソースとの明示的な解除が無い状態で、データソース側のResetメソッドを実行すると以下の例外が発生します。
========================
System.NullReferenceException: 'オブジェクト参照がオブジェクト インスタンスに設定されていません。
========================
【再現手順】
1.新規作成したプロジェクトのForm1にFpSpreadを貼り付けます。
2.下記サンプルコードを記述しプロジェクトをデバッグ実行します。
■サンプルコード(VB.NET)
========================
System.NullReferenceException: 'オブジェクト参照がオブジェクト インスタンスに設定されていません。
========================
【再現手順】
1.新規作成したプロジェクトのForm1にFpSpreadを貼り付けます。
2.下記サンプルコードを記述しプロジェクトをデバッグ実行します。
■サンプルコード(VB.NET)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim dt As DataTable
' データの作成
dt = New DataTable("Test")
dt.Columns.Add("ColA", GetType(String))
dt.Columns.Add("ColB", GetType(String))
For i = 0 To 9
dt.Rows.Add($"A{i}", $"B{i}")
Next
dt.AcceptChanges()
' SPREADの設定
FpSpread1.ActiveSheet.DataSource = dt
' SPREADの初期化
FpSpread1.Reset()
' データテーブルの初期化
dt.Reset()
End Sub
Dim dt As DataTable
' データの作成
dt = New DataTable("Test")
dt.Columns.Add("ColA", GetType(String))
dt.Columns.Add("ColB", GetType(String))
For i = 0 To 9
dt.Rows.Add($"A{i}", $"B{i}")
Next
dt.AcceptChanges()
' SPREADの設定
FpSpread1.ActiveSheet.DataSource = dt
' SPREADの初期化
FpSpread1.Reset()
' データテーブルの初期化
dt.Reset()
End Sub
回避方法
Service Pack 4(v11.0.4505.2012)で修正済み。
Service Pack 4 を適用せずに対処する方法としては、リセット前にDataSourceプロパティをNothingに設定します。
■サンプルコード(VB.NET)
■サンプルコード(VB.NET)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim dt As DataTable
' データの作成
dt = New DataTable("Test")
dt.Columns.Add("ColA", GetType(String))
dt.Columns.Add("ColB", GetType(String))
For i = 0 To 9
dt.Rows.Add($"A{i}", $"B{i}")
Next
dt.AcceptChanges()
' SPREADの設定
FpSpread1.ActiveSheet.DataSource = dt
' 対応策:データソースの初期化
'FpSpread1.ActiveSheet.DataSource = Nothing
' SPREADの初期化
FpSpread1.Reset()
' データテーブルの初期化
dt.Reset()
End Sub
Dim dt As DataTable
' データの作成
dt = New DataTable("Test")
dt.Columns.Add("ColA", GetType(String))
dt.Columns.Add("ColB", GetType(String))
For i = 0 To 9
dt.Rows.Add($"A{i}", $"B{i}")
Next
dt.AcceptChanges()
' SPREADの設定
FpSpread1.ActiveSheet.DataSource = dt
' 対応策:データソースの初期化
'FpSpread1.ActiveSheet.DataSource = Nothing
' SPREADの初期化
FpSpread1.Reset()
' データテーブルの初期化
dt.Reset()
End Sub
旧文書番号
84509