Hallo,
Ich habe drei Tabellen, die wir dt_A, dt_B und dt_C nennen können. Daten aus den Tabellen dt_A und dt_B werden entweder hochgeladen oder in dt_C verkettet.
Da die Daten von dt_A oder dt_B von verschiedenen Benutzern zu dt_C hinzugefügt und zu verschiedenen Zeiten generiert werden können. Um mehrere Hinzufügungen zu C zu vermeiden, habe ich mich daher entschlossen, zuerst zu prüfen, ob diese bereits vorhanden sind. Meine Idee war einfach:
Datum = dt_A: Name ("Messdatum") [i];
lot = dt_A: Lotname [i];
Wafer = dt_A: WaferNumber [i];
Chip = dt_A: Position [i];
Für jede Reihe(
if (: Name ("Messdatum") == Datum &: Lotname == Lot &: WaferNumber == Wafer &: Position == Chip, a = 1, a = 0);
);
// a = 1 wenn die Werte gefunden werden
// a = 0, wenn die Werte nicht gefunden werden
und hier kommt das Problem, mit dem ich konfrontiert war. Ich habe in dt_A eine Anzahl von Daten generiert, von denen einige bereits in dt_C verfügbar sind. Auch wenn die Bedingung wahr ist, a = 1 , Das Ergebnis ist a = 0 .
Wenn ich jedoch laufe:
dt_C << wähle wo (: Name ("Messdatum") == Datum &: Lotname == Lot &: WaferNumber == Wafer &: Position == Chip);
Die Zeile in dt_C ist ausgewählt.
Irgendwelche Ideen, wo das Problem liegt?
Ich habe einige Abhilfemaßnahmen getroffen, und da die Auswahlfunktion ohne Probleme funktioniert, war meine Lösung einfach:
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
);
In diesem Fall gibt das Programm immer den korrekten Wert "a" zurück. Und das weitere Konzept, entweder die Daten zu verketten oder zu aktualisieren, funktioniert ohne Probleme:)