CLOSE
バグ情報_要注意

概要

データウィンドウからドット表記で取得した Null 値を別のデータウィンドウの初期値 (initial プロパティ) に設定すると、行を追加した際に不正な値が入力されます。

バグ ID14921
製品PowerBuilder
ステータスAppeon にて検証中
バージョン日本語版英語版
12.6 以前
2017 (R2)
2017 (R3)
2019
2021
2022××
◯:修正済み/未発生、×:未修正、-:未確認 (※ 2017 以外のバージョンについてはリリースされている最新リビジョンでの状況です)

詳細

データウィンドウのカラムからドット表記で取得した文字列値を別のデータウィンドウの初期値 (Initial) に設定するケースにおいて、取得元のカラムが Null 値 (文字列) であった場合、初期値として設定後に行を追加すると、半角スペースや意図しない文字列など、不正な値が対象のカラムに入力されます。

string ls_initial

// dw_1 のカラムの 1 行目の値を dw_2 のカラムの初期値に設定
ls_initial = dw_1.object.column[1]
dw_2.object.Column.initial = ls_initial


dw_2.InsertRow(0) //不正な値が入力されて行追加される

回避策

不具合の無いバージョンと同じ動作を再現するには、取得した値を String 関数で明示的に文字列型に変換するか、GetItemString 関数で文字列として取得します。

  • 1. String 関数で明示的に文字列型に変換する
string ls_initial

// dw_1 のカラムの 1 行目の値を dw_2 のカラムの初期値に設定
ls_initial = String(dw_1.object.column[1])
dw_2.object.Column.initial = ls_initial
  • 2. GetItemString 関数で文字列型として値を取得する
string ls_initial

// dw_1 のカラムの 1 行目の値を dw_2 のカラムの初期値に設定
ls_initial = dw_1.GetItemString(1, "column")
dw_2.object.column.initial = ls_initial

備考

バージョンを問わず、実際に Null 値を初期値として設定したい場合は、"null" という文字列を Initial プロパティに設定します。

string ls_init

ls_init = dw_1.object.column[1]

// 取得した値が Null だった場合
IF IsNull(ls_init) THEN
    // 初期値を Null 値に設定
    ls_init = "null"
END IF

dw_2.object.col1.initial = ls_init
x instagram facebook youtube