条件があればこんにちは、
3つのテーブルがあり、それらをdt_A、dt_B、およびdt_Cと呼びます。 テーブルdt_Aおよびdt_Bのデータは、dt_Cにアップロードまたは連結されます。
dt_Aまたはdt_Bからのデータは、さまざまなユーザーがdt_ Cに追加でき、さまざまな時間に生成できるためです。 したがって、Cへの複数の追加を回避するために、最初にそれらがすでに存在するかどうかを確認することにしました。 私の考えは単純でした:
date = dt_A:Name( "測定日")[i];
ロット= dt_A:ロット名[i];
ウェーハ= dt_A:WaferNumber [i];
チップ= dt_A:Position [i];
各行(
if(:Name( "測定日")==日付&:ロット名==ロット&:ウェーハ番号==ウェーハ&:位置==チップ、a = 1、a = 0);
);
//値が見つかった場合はa = 1
//値が見つからない場合はa = 0
そして、ここに私が直面した問題があります。 dt_Aで多数のデータを生成しましたが、そのうちのいくつかはすでにdt_Cで利用可能です。 条件が真であっても、 a = 1 、結果はa = 0 。
しかし、私が実行すると:
dt_C << select where(:Name( "measurement date")== date&:Lotname == lot&:WaferNumber == Wafer&:Position == chip);
dt_Cの行が選択されています。
問題があるところに何かアイデアはありますか?
データ表再:条件の場合For Each Row()を使用すると、操作を実行するデータテーブルに関して、JMPが混乱する可能性があります。 正しいデータテーブルで実行されていることを確認してください。
1つまたは他のデータテーブル値の文字変数に前後の空白がありますか?
日付の値は同じ方法で保存および表示されていますか。 m / d / y形式を使用して日時値を表示し、データに時間コンポーネントが含まれている場合、そのような時間値がない値と同じ値にはなりません。再:条件の場合ジムにあなたの提案をありがとう:)
実際、各row()関数の前に行電流データテーブル(dt_C)があります。 日付も確認しました。 問題なく動作します。 実際にエラーを発生させるのは、表の「チップ」です。その形式は文字であり、モデリングタイプは名目上の位置です。 チップは単なるキャラクターです。 そして、ここでエラーが発生しました。
私はそれをデバッグし続けます。:)再:条件の場合位置とチップの比較にTrim()関数を使用してみてください再:条件の場合私はいくつかの回避策を講じましたが、select関数は問題なく機能するため、私の解決策は単純です。
dt_C << Select Where(
:Name( "measurement date" ) == date:Lotname == lot & :WaferNumber == wafer & :Position == chip
);
If( N Rows( dt_C << get selected rows ) > 0,
a = 1,
a = 0
);
この場合、プログラムは常に正しい「a」値を返します。 そして、データを連結または更新するというさらなる概念は問題なく機能します:)