取得方法によって DateTime 型のカラムの値が異なる
2020/10/19
DateTime 型のカラムから値を取得する場合、取得方法によって値が異なる事象が報告されています。
Bug ID | 4246 | ||||||
---|---|---|---|---|---|---|---|
Product | PowerBuilder EN/JP | ||||||
ステータス | Appeon にて検証中 | ||||||
発生バージョン | EN | 12.6以前 | 2017 | 2017 R2 | 2017 R3 | 2019 | 2019 R2 |
JP | 12.6以前 | - | 2017 R2 | 2017 R3 | - | - |
※ :発生バージョン :解決済み、未発生 :未確認
詳細
データウィンドウやデータストアの DateTime 型のカラムから値を取得する際に対象のカラムに時間だけがセットされている場合、“オブジェクトから直接取得する方法” と “GetItemDateTime 関数で取得する方法”とで取得される値が異なります。オブジェクトから直接取得すると値が「????/??/?? (セットされている) 時間」となり、GetItemDateTime 関数で取得すると値が「Null」となります。
例
datetime dt_1, dt_2 // データウィンドウオブジェクト (dw_1) の DateTime 型のカラム (col) に時間をセット dw_1.SetItem(1, "col", Time("12:34:56")) // オブジェクトから直接値を取得 (dt_1 には「????/??/?? 12:34:56」が返される) dt_1 = dw_1.object.col[1] // GetItemDateTime 関数で値を取得 (dt_2 には「Null」が返される) dt_2 = dw_1.GetItemDateTime(1, "col")
回避策
- 日付もあわせてセットする
- DateTime 型のカラムに値をセットする場合、時間だけでなく日付もセットするようにしてください。
- 値をオブジェクトから直接取得する
- DateTime 型のカラムから値を取得する場合、取得方法をオブジェクトから直接取得するようにしてください。