Q181:テーブル行が有るかを見て、無かったら行追加、有ったら同じ番号があるかどうかとなるように処理を書いているつもりなのですが、同じ番号が有ったら行は追加しないようにしたいのですが、追加されてしまいます。
Q181-1:
お送りしましたアプリケーションにてID25からの処理について、テーブル行が有るかを見て、無かったら行追加、有ったら同じ番号があるかどうかとなるように処理を書いているつもりなのですが、同じ番号が有ったら行は追加しないようにしたいのですが、追加されてしまいます。何度か見直して変更もしてみたのですが上手くいきません。
A181-1:
お送り頂いたファイルを拝見すると、[繰返し制御(FOR)]を使用し、一行ずつセルの値と[テキストフィールド(ID:30)]の値を比較していますが、このままだと該当セルが発見されるまで、繰返し、行を追加する処理が呼び出されてしまいます。
解決策としては、一列のデータを[リスト格納変数]に入れ、メソッド「indexOf」を実行し、該当データが無い場合の「-1」が返ってきたら、行を追加する処理を行うなどが考えられます。
また、その前の[テーブル]の行の有無を調べる処理ですが、対象が[テーブル(ID:40)]になっていたのと、[比較演算]が「≧」なので左オペランドが「行数」に対して右オペランドが「0」では、常に処理が行われてしまうのが気になりました。
お送り頂いたファイルを上記内容で変更してお送り致しますので、目的の動作となるかどうかご確認下さい。違うようでしたら、ご遠慮なくご連絡頂ければ幸いです。どうぞよろしくお願い申し上げます。
Q181-2:
[テーブル]セルの位置を指定して値を取得している箇所があるが、[リスト格納変数]に入れたデータ中にメソッド「indexOf」で引数に該当するデータがあった場合、どのように指定すれば良いか。
A181-2:
「indexOf」で該当データがあった場合には、その要素の位置番号が返ります。行位置番号と同じ位置番号です。
今回は[等価演算(=)]の左オペランドに設定している箇所があるので、左オペランドを取得するか、一旦変数に入れ、後で取得しても良いです。