Salut,
J'ai trois tables, appelons-les dt_A, dt_B et dt_C. Les données des tables dt_A et dt_B sont téléchargées ou concaténées dans dt_C.
Étant donné que les données de dt_A ou dt_B peuvent être ajoutées dans dt_ C par différents utilisateurs et peuvent être générées à des moments différents. Par conséquent, afin d'éviter plusieurs ajouts dans C, j'ai décidé de vérifier d'abord si ceux-ci existent déjà. Mon idée était simple:
date = dt_A: Nom ("date de mesure") [i];
lot = dt_A: Nom du lot [i];
wafer = dt_A: WaferNumber [i];
puce = dt_A: Position [i];
pour chaque ligne (
if (: Name ("date de mesure") == date &: Lotname == lot &: WaferNumber == wafer &: Position == chip, a = 1, a = 0);
);
// a = 1 si les valeurs sont trouvées
// a = 0 si les valeurs ne sont pas trouvées
et voici le problème auquel j'ai été confronté. J'ai généré un certain nombre de données dans dt_A, certaines d'entre elles sont déjà disponibles dans dt_C. Même si la condition est vraie, a = 1 , le résultat est a = 0 .
Cependant, lorsque je cours:
dt_C << sélectionnez où (: Nom ("date de mesure") == date &: Nom de lot == lot &: WaferNumber == wafer &: Position == puce);
la ligne dans dt_C est sélectionnée.
Des idées où se situe le problème?
J'ai fait quelques contournements, et comme la fonction de sélection fonctionne sans problème, ma solution était donc simplement:
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
);
dans ce cas, le programme renvoie toujours la valeur "a" correcte. Et le concept supplémentaire de concaténation ou de mise à jour des données fonctionne sans problème:)