数値型セルで最大値等を設定しているとき、Single型の数値とデータバインドできない場合がある

文書番号 : 26540     文書種別 : 不具合     最終更新日 : 2008/11/28
文書を印刷する
対象製品
El Tabelle MultiRow 4.0J
発生環境
この現象は、次のファイルバージョンのアセンブリで発生します。
v4.0.2008.0710 および以前のアセンブリ
状況
修正済み
詳細
数値型セルで最大値や最小値を設定しているとき、Single型の数値とデータバインドすると例外が発生する場合があります。
例えば、次のケースでは例外が発生します
- 数値型セルの最大値を99999.99と設定
- 数値型セルとバインドするデータ型をSingle型に設定
- バインドするデータは、99999.99

El Tabelleは数値型セルのデータはDouble型で保持します。Single型からDouble型への変換誤差がある場合に、(例:99999.99は、99999.9921875と変換される)指定された最大値を越えるため例外が発生します。
回避方法
この現象は、ファイル バージョン v4.0.2008.1118 以降のアセンブリで修正されています。v4.0.2008.1118 のホットフィックスは、こちらから取得できます。

または、MRowBindingErrorイベント(SP6で追加)内で、データを設定しなおします。
例:ここでは, 2カラム目が数値型セルと仮定しています。
[Visual Basic]
If e.Position.Column = 1 Then
  e.Ignore = True
  Dim result As Decimal
  If Decimal.TryParse(String.Concat(e.Value), result) Then
    MultiRowSheet1(e.Position.MRow, e.Position.Column, e.Position.Row).Value = result
  End If
End If


[C#]
if (e.Position.Column == 1) {
  e.Ignore = true;
  Decimal result;
  if (Decimal.TryParse(String.Concat(e.Value), out result)){
    multiRowSheet1[e.Position.MRow, e.Position.Column, e.Position.Row].Value = result;
  }
}
キーワード
ETMR06997

この文書は、以前は次のバグレポートIDで公開されていました : 7759