Necesita comparar el resultado de una tabla con el límite de especificación en otra tabla. Si el resultado Tengo una tabla (Límites) con los límites.Las columnas de la tabla son Producto, Componente A, Componente B. Debajo de cada componente está el límite.Producto de ejemplo, Aluminio, Zinc
Fudd .24 .50
Tengo otra tabla FG Metals que tiene una columna PASA/FALLA y una columna Aluminio y una columna Zinc con los resultados en cada fila.Ejemplo PASA/FALLA, Aluminio, Zinc
.09 .1
Necesito comparar el resultado dt(FG metals) Aluminium .09 con el dt(Limits) Aluminium .24. Si el resultado es inferior al límite, coloque Aprobado en la columna PASA/FALLA; de lo contrario, coloque FALLA.
Espero haber explicado esto lo suficientemente bien.Por favor hazme saber si tienes preguntas.
Wayne
Re: Necesito comparar el resultado de una tabla con el límite de especificación en otra tabla. Si resultado < límite thFuncionó.
Muchas gracias.
Re: Necesito comparar el resultado de una tabla con el límite de especificación en otra tabla. Si resultado < límite thIntenta cambiar la línea de código a
<FONT style="background-color: #ffffff;">Column( colNamesList[theColumn] || " PASS/Fail" ) << delete</FONT> property("formula");
Re: Necesito comparar el resultado de una tabla con el límite de especificación en otra tabla. Si resultado < límite thHola TxNelson,
En el guión, si hago un comentario... Column( colNamesList[theColumn] || " PASS/Fail" ) << eliminar fórmula; esta funcionando bien
</CODE></P><P><CODE class=" language-jsl">Solo una consulta: ¿no estamos eliminando la fórmula de la columna, incluso antes de obtener nuestra columna? Como nuestra columna estará completa
una vez sustituiremos los valores de LSL y USL y lo estamos haciendo en la siguiente linea del bucle For?
</CODE></P><PRE><CODE class=" language-jsl">colNamesList = dt << get column names(string,continuous);
For( theColumn = 1, theColumn <= N Items( colNamesList ), theColumn++,
Clear Symbols( specs );
specs = Column( dt, colNamesList[theColumn] ) << get property( "Spec Limits" );
If( Is Empty( specs ) == 0, /*show(colNamesList[theColumn] || " PASS/Fail"), Wait (1); */
Eval(
Substitute(
Expr(
dt << New Column( colNamesList[theColumn] || " PASS/Fail",
numeric,
CONTINUOUS,
FORMULA( If( __LSL__ <= __col__ <= __USL__, 1, 0 ) )
);
/* Column( colNamesList[theColumn] || " PASS/Fail" ) << delete formula;*/
),
Expr( __LSL__ ), specs["LSL"],
Expr( __col__ ), Parse(":" || colNamesLIst[theColumn] ),
Expr( __USL__ ), specs["USL"]
)
)
);
);
Re: Necesito comparar el resultado de una tabla con el límite de especificación en otra tabla. Si resultado < límite thCualquiera que sea el tiempo de espera que estoy poniendo, solo evalúa solo la primera columna y con el mismo error. Pero, si lo divido y lo ejecuto en dos partes, ¡está bien! ¿No tienes idea de por qué?
Re: Necesito comparar el resultado de una tabla con el límite de especificación en otra tabla. Si resultado < límite thdt << volver a ejecutar fórmulas; y espere (0) - ninguno de ellos funciona para mí. Pero sí, si divido mi código en dos ejecuciones, funciona bien.
¿Alguna otra sugerencia?
Re: Necesito comparar el resultado de una tabla con el límite de especificación en otra tabla. Si resultado < límite thPuedes agregar un
wait(0);
o
dt << rerun formulas;
Re: Necesito comparar el resultado de una tabla con el límite de especificación en otra tabla. Si resultado < límite thHola, sí, está funcionando si estoy ejecutando código hasta administrar el límite de especificaciones primero y luego el resto, y agregando
show(colNamesList[theColumn] || " PASS/Fail"); no hace ninguna diferencia. El código aún no se ejecuta de una vez, incluso después de agregar esta línea.
¿Hay alguna forma en que pueda forzar la evaluación de la parte del límite de especificaciones de administración primero y luego seguir adelante o puedo esperar (digamos - 2 segundos) recomendar antes de entrar en el bucle for?
Gracias.
Re: Necesito comparar el resultado de una tabla con el límite de especificación en otra tabla. Si resultado < límite thEs posible que Administrar límites de especificaciones no finalice antes de que se procese el siguiente código.Intente ejecutar solo Administrar límites de especificaciones.Luego, una vez que esté completo, ejecute el código restante.
Además, agregue
show(colNamesList[theColumn] || " PASS/Fail");
Justo antes de la línea 19
Eval(
Luego eche un vistazo a qué nombre se queja el código
Re: Necesito comparar el resultado de una tabla con el límite de especificación en otra tabla. Si resultado < límite thHola,
Hice esa verificación y me aseguré de que LSL y USL deberían estar allí en la tabla de especificaciones. De hecho, también inicio el ciclo For: la Columna = 10 donde sabía que desde la columna 10 en adelante, tengo límites de especificaciones en la tabla, aunque debe ser atendido por la declaración Está vacío.
Nada funcionó.
Gracias.
Re: Necesito comparar el resultado de una tabla con el límite de especificación en otra tabla. Si resultado < límite thLa línea de código que está teniendo un problema, es
Column( colNamesList[theColumn] || " PASS/Fail" ) << delete formula;
La declaración de error dice que no puede encontrar la columna a la que se hace referencia.La columna a la que se hace referencia debería haberse creado en la declaración anterior.
dt << New Column( colNamesList[theColumn] || " PASS/Fail",
numeric,
CONTINUOUS,
FORMULA( If( __LSL__ <= __col__ <= __USL__, 1, 0 ) )
);
Lo que se requiere para que esta declaración funcione es que existan tanto un LSL como un USL para la columna a la que se hace referencia en la fórmula.Sospecho que este es el problema.Verificaría para asegurarme de que existen tanto LSL como USL.
Con respecto a tu pregunta
" Además, ¿por qué usamos "__" en límites de especificaciones como LSL? "
Este no es un requisito de JMP.En la función Substitute(), existe el requisito de tener pares de valores coincidentes que JMP utilizará para la sustitución.Uso el "__" antes y después de los valores coincidentes, solo para aclarar el código.También le doy al nombre del par coincidente algo significativo.Y en este caso, la función Sustitución() sustituye la LSL, la columna de referencia y la USL, por lo que, según mi convención, uso __LSL__, __col__ y __USL__.
Re: Necesito comparar el resultado de una tabla con el límite de especificación en otra tabla. Si resultado < límite thHola Nelson,
Obtuve un error de seguimiento en el script que me enviaste el viernes. Alguna ayuda
Además, ¿por qué usamos "__" en los límites de especificaciones como LSL? Estaba tratando de encontrar una respuesta en la guía de secuencias de comandos jmp, pero no pude entender mucho.
Gracias.

Re: Necesito comparar el resultado de una tabla con el límite de especificación en otra tabla. Si resultado < límite thhola, muchas gracias,
Sí, eso es lo que (leyendo Guía de secuencias de comandos ) Estoy haciendo ahora un día. 
Re: Necesito comparar el resultado de una tabla con el límite de especificación en otra tabla. Si resultado < límite thHe colocado a continuación una solución a su solicitud.Sin embargo, debe tomarse el tiempo para leer la Guía de secuencias de comandos, para asegurarse de que comprende lo que proporcioné y también para ayudarlo a comprender el JSL proporcionado en otras discusiones.
names default to here(1);
dtspecs = Data Table ("Specs_Limits");
dt = Data Table ("Table_A");
Loadlimit = dt << Manage Spec Limits( Y( :BVIA_RES, :COILVIA_RES, :RDR_RES, :TAD_RES,
:WELGL_RES), Load from Limits Table("Specs_Limits.jmp"), Save to Column Properties (1) );
Loadlimit << close window;
colNamesList = dt << get column names(string,continuous);
For( theColumn = 1, theColumn <= N Items( colNamesList ), theColumn++,
Clear Symbols( specs );
specs = Column( dt, colNamesList[theColumn] ) << get property( "Spec Limits" );
If( Is Empty( specs ) == 0,
Eval(
Substitute(
Expr(
dt << New Column( colNamesList[theColumn] || " PASS/Fail",
numeric,
CONTINUOUS,
FORMULA( If( __LSL__ <= __col__ <= __USL__, 1, 0 ) )
);
Column( colNamesList[theColumn] || " PASS/Fail" ) << delete formula;
),
Expr( __LSL__ ), specs["LSL"],
Expr( __col__ ), Parse(":" || colNamesLIst[theColumn] ),
Expr( __USL__ ), specs["USL"]
)
)
);
);Re: Necesito comparar el resultado de una tabla con el límite de especificación en otra tabla. Si resultado < límite thHola TxNelson,
Necesito una solución similar y estaba tratando de seguir la que me proporcionó, pero no pude obtener mis resultados. Me podría ayudar --
Tengo dos tablas: una es la tabla de datos y la otra es la tabla de especificaciones. Necesito comparar los datos en la tabla principal con las especificaciones en la tabla de especificaciones y colocarlos en una nueva columna como 1 (aprobado) y 0 (fallido).
Alguna ayuda ?
Re: Necesito comparar el resultado de una tabla con el límite de especificación en otra tabla. Si resultado < límite thJim,
Funciona genial.De nuevo, gracias por tu ayuda.
Wayne
Re: Necesito comparar el resultado de una tabla con el límite de especificación en otra tabla. Si resultado < límite th
- Las diversas columnas de metales en el archivo de límites deben ser columnas numéricas.
- La columna Pasa/Falla en la tabla de datos de Metales debe definirse como carácter.
Aquí hay una secuencia de comandos que funciona según los datos de ejemplo que proporcionó... y con los cambios anteriores.El código usa la tabla de datos de límites para determinar qué metales probar.
Names Default To Here( 1 );
dtLimits = Data Table( "Limits sample (1)" );
dtMetals = Data Table( "FG Sample (1)" );
// Get the names of the columns with the metals data in them
metalsColNames = dtLimits << get column names( string, numeric );
For( theRow = 1, theRow <= N Rows( dtMetals ), theRow++,
If( N Rows( dtLimits << get rows where( dtLimits:product == dtMetals:Product[theRow] ) ) > 0,
theProductRow = (dtLimits << get rows where( dtLimits:product == dtMetals:Product[theRow] ))[1];
result = "Pass";
For( theColumn = 1, theColumn <= N Items( metalsColNames ), theColumn++,
target = Column( dtLimits, metalsColNames[theColumn] )[theProductRow];
col = Column( dtMetals, metalsColNames[theColumn] );
If( col[theRow] < target,
result = "Fail"
);
);
dtMetals:Name( "Pass/Fail" )[theRow] = result;
)
);Re: Necesito comparar el resultado de una tabla con el límite de especificación en otra tabla. Si resultado < límite thSi algún metal falla, la muestra falla. Si todos los metales pasan, entonces la muestra pasa.Re: Necesito comparar el resultado de una tabla con el límite de especificación en otra tabla. Si resultado < límite thTodo lo que tiene que suceder es encontrar la fila correcta en la Tabla de límites, para el Producto en la fila de la tabla de datos de Metales. Le conseguiré una modificación de mi secuencia de comandos que hará eso... pero no necesita tener más de una columna Pasa/Falla en su tabla de datos de metales, porque cada metal puede pasar o fallar... ...o dices que si falla algún metal, entonces es un fallo, pero si todos pasan entonces la fila pasa????Re: Necesito comparar el resultado de una tabla con el límite de especificación en otra tabla. Si resultado < límite thJIM,
En mi archivo de límite tengo varios productos. Fudd with Aluminium y el límite .05 luego Miracle with Aluminium y el límite .02. Cada producto en el archivo de límites está debajo de la columna del producto. Producto de ejemplo, Aluminio, Zinc
Fudd .5 .1
Milagro .2 .5
Por favor, hágamelo saber cómo manejar el producto.
Saludos,
Wayne
Re: Necesito comparar el resultado de una tabla con el límite de especificación en otra tabla. Si resultado < límite thAquí hay un script que creo que hace lo que quieres.

Names Default To Here( 1 );
// Create example data tables
dtLimits = New Table( "Limits",
New Column( "Product", character, values( {"Fudd"} ) ),
New Column( "Aluminum", values( {.24} ) ),
New Column( "Zinc", values( {.50} ) )
);
dtMetals = New Table( "FG Metals",
add rows( 10 ),
New Column( "Pass/Fail Aluminum", character ),
New Column( "Pass/Fail Zinc", character ),
New Column( "Aluminum", formula( Random Uniform( 0, 1 ) ) ),
New Column( "Zinc", formula( Random Uniform( 0, 1 ) ) )
);
// Get the names of the columns with the metals data in them
metalsColNames = dtMetals << get column names( striing, numeric );
// Loop across the columns and down the rows and calculate the pass/fail
For( theColumn = 1, theColumn <= N Items( metalsColNames ), theColumn++,
target = Column( dtLimits, metalsColNames[theColumn] )[1];
col = Column( dtMetals, metalsColNames[theColumn] );
passFail = Column( dtMetals, " Pass/Fail " || metalsColNames[theColumn] );
For( theRow = 1, theRow <= N Rows( dtMetals ), theRow++,
If( col[theRow] < target,
passFail[theRow] = "Fail",
passFail[theRow] = "Pass"
)
);
);Re: Necesito comparar el resultado de una tabla con el límite de especificación en otra tabla. Si resultado < límite thAdjunto archivos de muestra.