Hola,
Tengo tres tablas, llamémoslas dt_A, dt_B y dt_C. Los datos de las tablas dt_A y dt_B se cargan o se concatenan en dt_C.
Dado que los datos de dt_A o dt_B pueden agregarse a dt_ C por diferentes usuarios y pueden generarse en diferentes momentos. Por lo tanto, para evitar múltiples adiciones en C, he decidido verificar primero si ya existen. Mi idea fue simple:
date = dt_A: Nombre ("fecha de medición") [i];
lot = dt_A: Nombre de lote [i];
wafer = dt_A: WaferNumber [i];
chip = dt_A: Posición [i];
por cada fila(
if (: Nombre ("fecha de medición") == fecha &: Nombre de lote == lote &: Número de oblea == oblea &: Posición == chip, a = 1, a = 0);
);
// a = 1 si se encuentran los valores
// a = 0 si no se encuentran los valores
y aquí viene el problema al que me enfrenté. He generado una cantidad de datos en dt_A, algunos de ellos ya están disponibles en dt_C. Incluso si la condición es verdadera, a = 1 , el resultado es a = 0 .
Sin embargo, cuando ejecuto:
dt_C << seleccione dónde (: Nombre ("fecha de medición") == fecha &: Nombre de lote == lote &: Número de oblea == oblea &: Posición == chip);
se selecciona la fila en dt_C.
¿Alguna idea de dónde radica el problema?
He hecho algunas soluciones y, dado que la función de selección funciona sin problemas, mi solución fue simplemente:
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
);
en este caso, el programa siempre devuelve el valor "a" correcto. Y el concepto adicional de concatenar o actualizar los datos funciona sin problemas:)