È necessario confrontare il risultato di una tabella con il limite delle specifiche in un'altra tabella. Se risultato < limite allora passaHo una tabella (Limiti) con i limiti.Le colonne della tabella sono Prodotto, Componente A, Componente B. Sotto ogni componente c'è il limite.Esempio di prodotto, alluminio, zinco
Fudd .24 .50
Ho un'altra tabella FG Metals che ha una colonna PASS/FAIL e una colonna di alluminio e una colonna di zinco con i risultati in ogni riga.Esempio PASS/FAIL, Alluminio, Zinco
.09 .1
Devo confrontare il risultato dt(FG metals) Aluminium .09 con il risultato dt(Limits) Aluminium .24. Se il risultato è inferiore al limite, metti Pass nella colonna PASS/FAIL altrimenti metti FAIL.
Spero di averlo spiegato abbastanza bene.Per favore fatemi sapere se avete domande.
Wayne
Re: Necessità di confrontare il risultato di una tabella con il limite delle specifiche in un'altra tabella. Se risultato < limite thHa funzionato.
Grazie molto.
Re: Necessità di confrontare il risultato di una tabella con il limite delle specifiche in un'altra tabella. Se risultato < limite thProva a cambiare la riga di codice in
<FONT style="background-color: #ffffff;">Column( colNamesList[theColumn] || " PASS/Fail" ) << delete</FONT> property("formula");
Re: Necessità di confrontare il risultato di una tabella con il limite delle specifiche in un'altra tabella. Se risultato < limite thCiao TxNelson,
Nella sceneggiatura, se commento - Column( colNamesList[theColumn] || " PASS/Fail" ) << elimina formula; sta andando bene.
</CODE></P><P><CODE class=" language-jsl">Solo una query: non stiamo eliminando la formula della colonna, anche prima di ottenere la nostra colonna? Poiché la nostra colonna sarà completa
una volta che sostituiremo i valori di LSL e USL e stiamo facendo nella riga successiva di For loop ?
</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: Necessità di confrontare il risultato di una tabella con il limite delle specifiche in un'altra tabella. Se risultato < limite thQualunque sia il tempo di attesa che sto mettendo, valuta solo la prima colonna e lo stesso errore. Ma se lo divido ed eseguo in due parti, va bene! Non ho idea del perché?
Re: Necessità di confrontare il risultato di una tabella con il limite delle specifiche in un'altra tabella. Se risultato < limite thdt << formule di ripetizione; e attendi (0) - nessuno di loro funziona per me. Ma sì, se divido il mio codice in due esecuzioni, funziona bene.
Qualche altro suggerimento?
Re: Necessità di confrontare il risultato di una tabella con il limite delle specifiche in un'altra tabella. Se risultato < limite thPuoi aggiungere un
wait(0);
o
dt << rerun formulas;
Re: Necessità di confrontare il risultato di una tabella con il limite delle specifiche in un'altra tabella. Se risultato < limite thCiao, Sì, funziona se eseguo prima il codice fino a gestire il limite delle specifiche e poi il resto, e aggiungendo
show(colNamesList[theColumn] || " PASS/Fail"); non fa alcuna differenza. Il codice non è ancora in esecuzione in una volta, anche dopo aver aggiunto questa riga.
C'è un modo in cui posso forzare a valutare prima la parte del limite di gestione delle specifiche e poi spostarmi ulteriormente o posso aspettare (diciamo - 2 secondi) prima di entrare nel ciclo for?
Grazie.
Re: Necessità di confrontare il risultato di una tabella con il limite delle specifiche in un'altra tabella. Se risultato < limite thLa gestione dei limiti delle specifiche potrebbe non terminare prima dell'elaborazione del codice seguente.Prova a eseguire solo attraverso Gestisci limiti delle specifiche.Quindi, una volta completato, eseguire il codice rimanente.
Inoltre, aggiungi
show(colNamesList[theColumn] || " PASS/Fail");
Poco prima della riga 19
Eval(
Quindi dai un'occhiata a quale nome si lamenta il codice
Re: Necessità di confrontare il risultato di una tabella con il limite delle specifiche in un'altra tabella. Se risultato < limite thCiao,
Ho fatto quel controllo e mi sono assicurato che LSL e USL fossero entrambi presenti nella tabella delle specifiche. In effetti, avvio anche il ciclo For - la colonna = 10 dove sapevo che dalla colonna 10 in poi ho i limiti delle specifiche nella tabella, anche se dovrebbe essere curato dall'istruzione Is Empty.
Niente ha funzionato.
Grazie.
Re: Necessità di confrontare il risultato di una tabella con il limite delle specifiche in un'altra tabella. Se risultato < limite thLa riga di codice che sta riscontrando un problema è
Column( colNamesList[theColumn] || " PASS/Fail" ) << delete formula;
L'istruzione di errore sta dicendo che non riesce a trovare la colonna a cui si fa riferimento.La colonna a cui si fa riferimento avrebbe dovuto essere creata nell'istruzione appena prima.
dt << New Column( colNamesList[theColumn] || " PASS/Fail",
numeric,
CONTINUOUS,
FORMULA( If( __LSL__ <= __col__ <= __USL__, 1, 0 ) )
);
Ciò che è necessario affinché questa affermazione funzioni è che esistono sia un LSL che un USL per la colonna a cui si fa riferimento nella formula.Sospetto che questo sia il problema.Controllerei per assicurarmi che esistano sia LSL che USL.
Riguardo alla tua domanda
" Anche perché usiamo "__" nei limiti delle specifiche come LSL "
Questo non è un requisito JMP.Nella funzione Substitute(), è necessario disporre di coppie di valori corrispondenti che JMP utilizzerà per la sostituzione.Uso "__" prima e dopo i valori corrispondenti, solo per chiarire il codice.Do anche al nome della coppia corrispondente qualcosa di significativo.E in questo caso, la funzione Substitution() sta sostituendo l'LSL, il riferimento Col e l'USL, e quindi per mia convenzione, utilizzo __LSL__, __col__ e __USL__.
Re: Necessità di confrontare il risultato di una tabella con il limite delle specifiche in un'altra tabella. Se risultato < limite thCiao Nelson,
Ricevo un errore di inseguimento nello script che mi invii venerdì. Qualsiasi aiuto
Anche perché usiamo "__" nei limiti delle specifiche come LSL. Stavo cercando di trovare una risposta nelle linee guida dello script jmp ma non riuscivo a capire molto.
Grazie.

Re: Necessità di confrontare il risultato di una tabella con il limite delle specifiche in un'altra tabella. Se risultato < limite thCiao, molte grazie,
Sì, ecco cosa (leggendo Guida agli script ) Sto facendo ora un giorno. 
Re: Necessità di confrontare il risultato di una tabella con il limite delle specifiche in un'altra tabella. Se risultato < limite thDi seguito ho inserito una soluzione alla tua richiesta.Tuttavia, devi dedicare del tempo a leggere la Guida agli script, per assicurarti di comprendere ciò che ho fornito e anche per aiutarti a comprendere il JSL fornito in altre discussioni
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: Necessità di confrontare il risultato di una tabella con il limite delle specifiche in un'altra tabella. Se risultato < limite thCiao Tx Nelson,
Ho bisogno di una soluzione simile e stavo cercando di seguire quella che hai fornito ma non sono riuscito a ottenere i miei risultati. Per favore potete aiutarmi --
Ho due tabelle: una è la tabella dei dati e l'altra è la tabella delle specifiche. Devo confrontare i dati nella tabella principale con le specifiche nella tabella delle specifiche e inserirli in una nuova colonna come 1 (passato) e 0 (non riuscito).
Qualsiasi aiuto ?
Re: Necessità di confrontare il risultato di una tabella con il limite delle specifiche in un'altra tabella. Se risultato < limite thJim,
Funziona alla grande.Grazie ancora per il vostro aiuto.
Wayne
Re: Necessità di confrontare il risultato di una tabella con il limite delle specifiche in un'altra tabella. Se risultato < limite th
- Le varie colonne dei metalli nel file dei limiti devono essere colonne numeriche.
- La colonna Pass/Fail nella tabella dati Metals deve essere definita come carattere.
Ecco uno script che funziona in base ai dati di esempio che hai fornito..... e con le modifiche precedenti.Il codice utilizza la tabella dei dati dei limiti per determinare quali metalli testare.
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: Necessità di confrontare il risultato di una tabella con il limite delle specifiche in un'altra tabella. Se risultato < limite thSe un metallo si guasta, il campione fallisce. Se tutti i metalli passano, il campione passa.Re: Necessità di confrontare il risultato di una tabella con il limite delle specifiche in un'altra tabella. Se risultato < limite thTutto quello che deve succedere è trovare la riga corretta nella tabella dei limiti, per il prodotto nella riga nella tabella dei dati dei metalli. Ti darò una modifica del mio script che lo farà ... ma non è necessario avere più di una colonna Pass/Fail nella tabella dei dati dei metalli, perché ogni metallo può passare o fallire .. ...o stai dicendo che se qualche metallo fallisce, allora è un fallimento, ma se passano tutti allora la riga passa????Re: Necessità di confrontare il risultato di una tabella con il limite delle specifiche in un'altra tabella. Se risultato < limite thJIM,
Nel mio file limite ho più prodotti. Fudd con Aluminium e il limite .05 poi Miracle con Aluminium e il limite .02. Ciascun prodotto nel file dei limiti si trova nella colonna del prodotto. Esempio di prodotto, alluminio, zinco
Fudd .5 .1
Miracolo .2 .5
Per favore fatemi sapere come maneggiare il prodotto.
Saluti,
Wayne
Re: Necessità di confrontare il risultato di una tabella con il limite delle specifiche in un'altra tabella. Se risultato < limite thEcco una sceneggiatura che penso faccia quello che vuoi

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: Necessità di confrontare il risultato di una tabella con il limite delle specifiche in un'altra tabella. Se risultato < limite thHo allegato file di esempio.