行の状態の選択と色これを機能させるためにさまざまなことを試しましたが、これまでのところ、機能的に使用できないスクリプトしかありません。 削除スクリプトは見事に機能しますが、行状態スクリプトは機能しますが、私が望んでいるように完全に機能しません。それを少しクリーンアップする方法があることを願っています。
dt << New Column ( "Row State 1",
Row State,
Set Formula ( If( :Alarm ID == "'00000D06", Color State(70))),
);
dt << New Column ( "Row State 2",
Row State,
Set Formula ( If( :Alarm ID == ("'000000B2"| "'000000BE"| "'0000013C"| "'0000013D"),
Color State(6))),
);
dt << New Column ( "Row State 3",
Row State,
Set Formula ( If( :Alarm ID == ("'0000000E"| "'00000144"| "'0000000A"| "'00000021"|
"'00000025"| "'00000027"| "'000000E9"| "'00000145"| "'000001E1"| "'00000F7C"),
Color State(1))),
);
dt << New Column ( "Row State 4",
Row State,
Set Formula ( If( :Alarm ID == "'00000E6E", Color State(38))),
);
dt << New Column ( "Row State 5",
Row State,
Set Formula ( If( :Alarm ID == ("'00000D3B"| "'00000230"| "'00000D42"), Color State(73))),
);
dt << New Column ( "Row State 6",
Row State,
Set Formula ( If( :Alarm ID == ("'0000003B"| "'00000072"| "'00000E8C"), Color State(37))),
);
dt << New Column ( "Row State 7",
Row State,
Set Formula ( If( :Alarm ID == "'00000DB6", Color State(78))),
);
dt << New Column ( "Row State 8",
Row State,
Set Formula ( If( :Alarm ID == "'00000E99", Color State(75))),
);
dt << New Column ( "Row State 9",
Row State,
Set Formula ( If( :Alarm ID == ("'00000E68"| "'00000E71"| "'00000E72"| "'00000E9A"),
Color State(72))),
);
dt << New Column ( "Row State 10",
Row State,
Set Formula ( If( :Alarm ID == ("'0000004E"| "'0000005C"| "'0000011C"| "'00000143"|
"'00000148"| "'000001D9"| "'00000DE9"| "'00000E41"), Color State(12))),
);
dt << New Column ( "Row State 11",
Row State,
Set Formula ( If( :Alarm ID == "'00000D2F", Color State(19))),
);
dt << New Column ( "Row State 12",
Row State,
Set Formula ( If( :Alarm ID == "'00000D2D", Color State(28))),
);
基本的には、列アラーム ID に特定の値を含む行を選択し、行の状態を選択した色に設定します。 私がやりたいことは、行の状態を設定し、その行を行の状態の色で強調表示することです。おそらく、すべての行の状態が設定された後に追加でそれを行うことができます。
これは何をするかというと、行の状態は作成されますが、適用されません。手動で適用する必要があります。また、行ごとに個別の行の状態が作成されますが、すぐに乱雑になってしまいます。else を使用して実行できるのではないかと思います。少なくとも存在しない行は削除してください。そうすれば役に立ちます。 また、複数のオプションを含む行は実際には機能していないようです。コードごとに 1 行を作成する必要がないように、それが機能することを期待していました。
誰かが私を助けてくれるといいのですが、時間があるときに引き続き取り組んでいます、ありがとう!
Re: 行状態の選択と色これは見事に機能します、ありがとう! このシステムの利点 (そして時には呪い) の 1 つは、同じ問題に対処する複数の異なる方法があることです。 次は非常に難しいものになるでしょう。おそらく来週挑戦してみます(笑)(または、非常に単純でまだわからないだけかもしれません!)Re: 行状態の選択と色これはあなたにとってはうまくいくと思います。これは、色の状態がまだなく、重複するアイテムがないことを前提としています。
Names default to here(1);
dt = open("$SAMPLE_DATA\Big Class.jmp");
color_aa = associative array(
{
// list of values are the first item, color state is the second in each list.
{{12, 13, 16}, 3},
{{14, 15}, 4},
{{17}, 5}
}
);
dt << Select Rows([1, 5, 9]);
rs = dt << Get Row States;
for(values = color_aa << First, !isempty(values), values = color_aa << Next(values),
rows = dt << Get Rows Where(Contains(values, :age));
color = color_aa[values];
rs[rows] = rs[rows] + 2^8*color;
);
dt << Set Row States(rs);
Re: 行状態の選択と色選択に基づいて各行の色の状態を変更する場合、以下の部分的なスクリプトは変更を行うために使用する構造です。
Names Default To Here( 1 );
dt = Current Data Table();
For( i = 1, i <= N Rows( dt ), i++,
If(
N Rows( Loc( {"'00000D06"}, :Alarm ID[i] ) ) > 0, Row State( i ) = Color State( 70 ),
N Rows( Loc( {"'000000B2", "'000000BE", "'0000013C", "'0000013D"}, :Alarm ID[i] ) ) > 0, Row State( i ) = Color State( 6 ),
N Rows(
Loc(
{"'0000000E", "'00000144", "'0000000A", "'00000021", "'00000025", "'00000027", "'000000E9", "'00000145", "'000001E1", "'00000F7C"},
:Alarm ID[i]
)
) > 0, Row State( i ) = Color State( 1 ),
N Rows( Loc( {"'00000E6E"}, :Alarm ID[i] ) ) > 0, Row State( i ) = Color State( 38 ),
N Rows( Loc( {"'00000D3B", "'00000230", "'00000D42"}, :Alarm ID[i] ) ) > 0, Row State( i ) = Color State( 73 )
)
);Re: 行状態の選択と色明らかに私の公式も機能しません^.^
簡単に言うと、X 値の行を 1 色で強調表示したいのです
Y 値と Z 値が別の色で強調表示された行
等...
特定の色はすでにスクリプトに含まれており、明らかに |または引数はそれらを選択する際の問題ですが、それを表現する正しい方法がわかりません。
Re: 行状態の選択と色あなたの質問を正しく理解していない可能性があります。しかし、これが私の最善の推測です。まず第一に、私はあなたの公式を機能させようとしたことがありません。 "something" == ("stuff"|"something") を実行して true と評価させることはできません。少なくとも私の知る限りでは。私はあなたがやろうとしていることを例に挙げましたが、大きく外れている可能性があります。
Names default to here(1);
dt = open("$SAMPLE_DATA\Big Class.jmp");
// this doesn't work
dt << New Column("Test", formula(:age == (12 | 14 | 16)));
//this should
values = {12, 14, 16};
rows = dt << Get Rows Where(Contains(values, :age));
//assuming they don't have color
dt << Select Rows([1, 5, 9]);
wait(1);
rs = dt << Get Row States;
//2^8*3 = color state(3) = red
rs[rows] = rs[rows] + 2^8*3;
dt << Set Row States(rs);