トランスフォームスクリプト(Oncomplete)のスクリプトで"source.next()"が機能しません。

Fagi
Tera Contributor

いつもお世話になっております。

 

トランスフォームスクリプト(Oncomplete)に以下のコードで、gs.info(source.getRowCount())でソーステーブルの行数を出力すると、5と出力されます。

その後に記載している、"while(source.next())"分のループの中に入らないのですが、その原因が分かりません。

 

以下にコードの画像を添付致します。

どんな些細な事でもいいので、ご教授頂けると幸いです。

宜しくお願い致します

 

source.next.png

 

 

3 REPLIES 3

Joel Dias
Kilo Sage

Docsを見るとonCompleteのsourceが「last row of the source import set table」、最終行を含んでいますので、次のレコードがなく、next()がfalseを返します。

ソースデータでループをするにはデータを取り直す必要があると思います。

import_set_rowを継承するテーブルから、import_setの条件を使って条件を設定することでできると思います。

Fagi
Tera Contributor

Joelさん

ご回答ありがとうございます。

私もそう考えて、while文の前にsource.query()を行いましたが、whileのループん中には入りませんでした。

こちらの原因ついて、何かご存知でしょうか?

sourceはデータ取得済みで、再びquery()を実行することでどう動くかが不明です。今の動きからすると何も起こりません。

おそらく以下の様なロジックの追加が必要です。

var sourceGr = new GlideRecord(import_set.table_name);

sourceGr.addQuery("sys_import_set", import_set.sys_id);

sourceGr.query();