SetItem メソッドで異なるデータ型の値をカラムにセットした場合にエラーを返さない

バグ情報

PowerServer において、SetItem メソッドで異なるデータ型の値をカラムにセットした場合にエラーを返さず、値がカラムにセットされる不具合が確認されています。

Bug ID 3251
Product PowerServer EN/JP
ステータス Appeonにて検証中
発生バージョン EN 2016 2017 2019
JP 2016 2017 2019

:発生バージョン    :解決済み、未発生    :未確認

詳細

SetItem メソッドで値のデータ型とカラムのデータ型が異なり且つカラムにセットする値が Null 値の場合、型違いのエラーを返さずにカラムへセットされてしまいます。そのため、既にカラムに値がセットされていると Null 値で上書きされてしまいます。また、SetItem メソッドの戻り値も「1」となります。

例えば、Number 型のカラムに対して、SetItem メソッドで Null 値が格納されている String 型変数をセットした場合、Number 型のカラムに Null 値がセットされます。PowerBuilder では型違いのエラーを返して戻り値が「-1」となり、Null 値はセットされません。

なお、格納されている値が Null 値以外の場合は型違いのエラーを返して、値はカラムにセットされません。

回避策

本不具合に関する回避策は以下となります。

  • 値のデータ型とカラムのデータ型が異なり且つカラムにセットする値が Null 値の時は、SetItem メソッドを実行しないようにしてください。
バグ情報 一覧を見る
PowerBuilder マイグレーション
PowerBuilder学習、動画で始めちゃう?