檢查輸入字符串中的晶片是否包含在數據表中我有一個來自下面的輸入字符串:
For( i = 1, i <= N Rows( dtWaferIDList ), i++,
tempi = Column( dtWaferIDList, 1 )[i];
InputString = If( i == 1, "'", "" ) || InputString || tempi || If( i < N Rows( dtWaferIDList ), "','", "'" );
);
還有我從數據庫中提取的 table1。 我想檢查一下(在表 1 的晶圓列中)輸入字符串中的所有晶圓是否都包含在該列中。
-如果所有晶圓都有數據:顯示消息=“所有可用晶圓的數據”。
- 如果不是:顯示消息 =“無可用數據”。
謝謝!
數據表腳本回复:檢查輸入字符串中的晶片是否包含在數據表中謝謝你倆! 看起來現在正在工作。 我很感激!
回复:檢查輸入字符串中的晶片是否包含在數據表中您指定的 msg 值不正確。下面將工作
msg = "\!N#Data is unavailable for the following wafers:" || Char( uncommon2 << Get Keys );
回复:檢查輸入字符串中的晶片是否包含在數據表中使用調試 Show()s 和小數據集來測試你哪裡出錯了(從查看/日誌打開日誌窗口)。
也許這會幫助你轉發:
Names Default To Here(1);
dt1 = Open("$SAMPLE_DATA/Big Class.jmp");
dt1 << Select Rows([1,2,3]);
dt2 = dt1 << Subset(selected rows);
dt1 << clear select;
dt1_uniq = Associative Array(dt1:name);
dt2_uniq = Associative Array(dt2:name);
dt1_copy = dt1_uniq;
dt2_copy = dt2_uniq;
dt1_copy << Remove(dt2_copy);
Show(concat items(dt1_uniq << get keys, ", "));
Show(concat items(dt2_uniq << get keys, ", "));
Show(concat items(dt1_copy << get keys, ", "));
Show(N Items(dt1_uniq), N Items(dt2_uniq), N Items(dt1_copy));回复:檢查輸入字符串中的晶片是否包含在數據表中@jthi
我看不出這如何解決我的特定問題。 當我運行你的腳本時,沒有任何反應。 我需要關聯數組中的鍵對用戶可見並顯示在消息框中。
unique wafers = Associative Array( WaferRgDt:Wafer );
given wafers = Associative Array( dtWaferIDList:WaferList );
intersection = unique wafers; intersection << Intersect( given wafers); //intersection between arrays
//uncommon represents wafers that have no data associated with it.
uncommon = given wafers; uncommon2 <<REMOVE></REMOVE>
回复:檢查輸入字符串中的晶片是否包含在數據表中要將字符串列表轉換為字符串,您可以使用 Concat Items()
Names Default To Here(1);
aa = Associative Array({"bun",
"shoe",
"tree",
"door"}
);
uniqKeys = aa << get keys;
Show(uniqKeys);
Show(Concat Items(uniqKeys, ", "));
回复:檢查輸入字符串中的晶片是否包含在數據表中還使用了這個討論帖子來幫助編寫上面的代碼回复:比較兩個列表(不常見元素)的快速方法?
回复:檢查輸入字符串中的晶片是否包含在數據表中你好尼爾森,
感謝您的幫助! 我對 JMP 還是有點陌生,根本沒有使用過關聯數組。 我已經在腳本指南和索引中閱讀了它;但我仍然有些困惑。 這是我在代碼中的位置:(直接從數據庫打開表 WaferRgDt 之後)
unique wafers = Associative Array( WaferRgDt:Wafer );
given wafers = Associative Array( dtWaferIDList:WaferList );
intersection = unique wafers; intersection << Intersect( given wafers); //intersection between arrays
//uncommmon2 represents wafers that have no data associated with it.
uncommon2 = given wafers; uncommon2 <<REMOVE></REMOVE>
當我運行它時,我得到一個帶有句號的空消息框......所以似乎仍然有問題。 想知道這是邏輯問題還是語法問題。 如果可能的話,我在尋找如何在消息框中寫入密鑰時遇到了一些麻煩。 希望這已經足夠清楚了。 再次感謝!
回复:檢查輸入字符串中的晶片是否包含在數據表中@jthi為您指出了正確的方向。您建議的方法是使用非常長的文字字符串。我建議您要么使用關聯數組,要么使用 JMP 列表。
下面是一個簡單的腳本,用於打開包含晶圓的數據表。然後它會創建一個包含一組隨機晶圓的數據表。最後,它檢查隨機集是否包含第一個數據表中的所有晶圓。
names default to here(1);
// Open Data Table: semiconductor capability.jmp
// → Data Table( "semiconductor capability" )
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
unique wafers = associative array(dt:Wafer);
// Create a random wafer table and see if it contains all wafers
dtRand = new table("Random",
add rows(60),
new column("Rand Wafer", set each value(random integer(1,24)));
);
random wafers = associative array(dtRand:Rand wafer);
Random wafers << Intersect( unique wafers );
if(n items(Random wafers) == n items( unique wafers),
msg = "data for all wafers available",
msg = "no data available"
);
new window("Message", <<MODAL></MODAL>回复:檢查輸入字符串中的晶片是否包含在數據表中您很可能會使用關聯數組進行此比較關聯數組的應用. 檢查部分比較兩個不同數據表中的列