各行に挿入するFor Each Row 反復処理内の insert into 文で苦労しています。「Type」列からカテゴリを検索し、それに基づいて「COLUMN_NAME」列の値を選択して、各カテゴリのリストを作成したいのですが、Insert Into 文がうまくいかないようです。
// Get the current data table
dt = Current Data Table();
colName = "Type";
// Get the column reference
Types = Column( colName );
// Extract all values from the column
allValues = Types << Get Values;
// Get unique values (removes duplicates)
Cats = Associative Array( allValues ) << Get Keys;
// Sort the unique values (optional)
Cats = Sort List( Cats );
// Display results in the log
Show( Cats );
delCats = {"", "-"};
For( i = 1, i <= N Items( delCats ), i++,
Remove From( Cats, As List( Loc( Cats, delCats[i] ) ) )
);
show(Cats);
For For( i = 1, i <= N Items( Cats ), i++,
Spud = Char(Cats(i));
Spud = {};
For Each Row(
// Access column values directly by name
If(:Type = Char(Cats[i]), Insert Into(Spud, :COLUMN_NAME) ;
);
));
声明。
自動化とスクリプトRe: Insert Into を使用した各行の挿入(あなたの意図を正しく理解している限りでは)このためにFor Each Rowを使う必要はありません。For Eachを<< Get Rows Whereとデータテーブルの添え字で使用して、リストに値を取得してください。
Re: Insert Into を使用した各行の挿入提供されたコードは実行できず、適切なスペースがないため読みにくいです。JSLの奇妙な手法(連想配列のキーが既にソートされているにもかかわらず順序付けされているなど)を使用しているため、AIによって作成されたものと思われます。
提供されたコード(と質問)だけを見ると、何をしようとしているのかよく分かりません。ただ、ループごとにSpudリストを置き換えているのかもしれません。それが問題になっているのかもしれません。
Re: Insert Into を使用した各行の挿入連続した課題
Spud = Char(Cats(i));
Spud = {};
最初のものを2番目のもので上書きしています。また、これらは外側のループ内にも含まれているため、 @jthi はリストが拡張されているのではなく再作成されていると示唆しています。
追加する
show( row(), spud, ...etc... );
ログ内の中間結果を取得するステートメントを複数箇所に記述することも役立ちます。または
write( "\!n x=" || char(x) || " y=" || char(y) );
フォーマットしたい場合は、
write( Eval Insert("\!n x=^x^ y=^y^) );
読みやすくなるかもしれません。
JSL エディターには、ループのインデントが視覚的にずれてしまった場合に役立つ再フォーマット コマンドがあります。