Find・SetFilter・SetValidate 関数の動作差異

バグ情報

PowerBuilder 2017 R2 JP以降において、Find・SetFilter・SetValidate 関数の動作がPowerBuilder12.6 JPと異なる不具合が確認されています。

Bug ID 1417
Product PowerBuilder JP
ステータス PowerBuilder 2017 R3 日本語版 MR (Build 1892) で修正済
発生バージョン EN 12.6 2017 2017 R2 2017 R3
JP 12.6 2017 R2 2017 R3

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

詳細

Find・SetFilter・SetValidate 関数の引数に全角数字を含んだ値を指定して、文字型以外のカラムに実行した場合の動作がPowerBuilder12.6 JPと異なります。

いずれの関数もPowerBuilder12.6 JPではエラーとなりますが、PowerBuilder 2017 R2 JP以降では全角数値の前までの値で検索や指定が行われます。動作の詳細は下記のとおりです。

【前提】数値型のカラム(num)が定義されているデータウィンドウに3行(11、12、13)の値がセットされている

  • Find 関数

Find( “num=12” , 1, 3 ) を実行した場合、PowerBuilder12.6 JPでは戻り値が -5(引数が不正です)となりますが、PowerBuilder 2017 R2 JP以降では “num=12” の条件で検索が行われ、戻り値が 2(2行目)となります。

  • SetFilter 関数

SetFilter( “num=12” ) を実行した場合、PowerBuilder12.6 JPでは戻り値が -1 となりますが、PowerBuilder 2017 R2 JP以降では “num=12” のフィルタ条件が指定され、戻り値が 1(正常終了)となります。

  • SetValidate 関数

SetValidate( “num=12” ) を実行した場合、PowerBuilder12.6 JPでは戻り値が -1 となりますが、PowerBuilder 2017 R2 JP以降では “num=12” の入力条件則が設定され、戻り値が 1(正常終了)となります。

回避策

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

  • 引数に全角数字が含まれないようにする
    • 文字型以外のカラムに対して Find・SetFilter・SetValidate 関数を実行する前に、引数の値に全角数値が含まれないよう事前にチェックしてください。
バグ情報 一覧を見る
PowerBuilder マイグレーション
PowerBuilder学習、動画で始めちゃう?