作成日: 2017/07/18 最終更新日: 2017/07/18
文書種別
制限事項
発生環境
SPREAD for Windows Forms 8.0J SP2(v8.0.3503.2008)以降で発生します。
詳細
例えば日付書式を設定したマスク型セルに、以前のバージョンでは「2017/04/07」など、リテラル文字「/」を含む値を設定できました。
しかし、8.0J SP2(v8.0.3503.2008)以降では、リテラル文字を含まない値「20170407」を設定する必要があります。
この現象は、以下の手順で確認できます。
【手順】
1.新規フォームにSPREADを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
--A1セルに「2017/__/__ __:__:__」と表示されます
(以前のバージョンでは「2017/04/07 12:00:00」と表示されていました)
【サンプルコード】
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim dt As New DataTable
dt.Columns.Add("A")
Dim row As DataRow = dt.NewRow
row("A") = "2017/04/07 12:00:00"
dt.Rows.Add(row)
FpSpread1.Sheets(0).DataAutoCellTypes = False
FpSpread1.Sheets(0).DataSource = dt
Dim mcDatetime As New FarPoint.Win.Spread.CellType.MaskCellType
mcDatetime.Mask = "####/##/## ##:##:##"
FpSpread1.Sheets(0).Columns(0).CellType = mcDatetime
FpSpread1.Sheets(0).Columns(0).DataField = "A"
End Sub
しかし、8.0J SP2(v8.0.3503.2008)以降では、リテラル文字を含まない値「20170407」を設定する必要があります。
この現象は、以下の手順で確認できます。
【手順】
1.新規フォームにSPREADを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
--A1セルに「2017/__/__ __:__:__」と表示されます
(以前のバージョンでは「2017/04/07 12:00:00」と表示されていました)
【サンプルコード】
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim dt As New DataTable
dt.Columns.Add("A")
Dim row As DataRow = dt.NewRow
row("A") = "2017/04/07 12:00:00"
dt.Rows.Add(row)
FpSpread1.Sheets(0).DataAutoCellTypes = False
FpSpread1.Sheets(0).DataSource = dt
Dim mcDatetime As New FarPoint.Win.Spread.CellType.MaskCellType
mcDatetime.Mask = "####/##/## ##:##:##"
FpSpread1.Sheets(0).Columns(0).CellType = mcDatetime
FpSpread1.Sheets(0).Columns(0).DataField = "A"
End Sub
回避方法
この現象は、不具合の修正に伴うマスク型セルの仕様変更に起因します。
以下のように、マスク型セルには、リテラル文字を含まない値を設定してください。
【サンプルコード】
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim dt As New DataTable
dt.Columns.Add("A")
Dim row As DataRow = dt.NewRow
row("A") = "20170407120000"
dt.Rows.Add(row)
FpSpread1.Sheets(0).DataAutoCellTypes = False
FpSpread1.Sheets(0).DataSource = dt
Dim mcDatetime As New FarPoint.Win.Spread.CellType.MaskCellType
mcDatetime.Mask = "####/##/## ##:##:##"
FpSpread1.Sheets(0).Columns(0).CellType = mcDatetime
FpSpread1.Sheets(0).Columns(0).DataField = "A"
End Sub
以下のように、マスク型セルには、リテラル文字を含まない値を設定してください。
【サンプルコード】
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim dt As New DataTable
dt.Columns.Add("A")
Dim row As DataRow = dt.NewRow
row("A") = "20170407120000"
dt.Rows.Add(row)
FpSpread1.Sheets(0).DataAutoCellTypes = False
FpSpread1.Sheets(0).DataSource = dt
Dim mcDatetime As New FarPoint.Win.Spread.CellType.MaskCellType
mcDatetime.Mask = "####/##/## ##:##:##"
FpSpread1.Sheets(0).Columns(0).CellType = mcDatetime
FpSpread1.Sheets(0).Columns(0).DataField = "A"
End Sub
旧文書番号
40810