Confronto nell'istruzione Select Where ().Ciao a tutti,
Ho effettuato ricerche approfondite su questo sito Web e penso che sia una soluzione semplice, ma per qualche motivo non riesco a farlo funzionare e sono rimasto bloccato per 2 giorni.
Nello script seguente chiedo all'utente quale parte della colonna specifica desidera selezionare. Ad esempio dove la colonna ha il valore 8. (la colonna può avere valori da 1 a 8). Vorrei selezionare le righe con questo valore in questa colonna e creare un nuovo dt in cui creo grafici specifici con solo questo sottoinsieme del datatable.
Crea la tabella del sottoinsieme con il nome con il numero che ho inserito nella casella di testo. Mi mostra quale numero ho inserito, ad esempio XNo = "8"; Ma Seleziona dove (Colonna == XNO) non funziona. Non mi dà errore, semplicemente non seleziona le righe specifiche né crea il grafico. Crea una nuova tabella dati con lo stesso nome del datatable a cui faccio riferimento.
Se inserisco Seleziona dove (colonna == "8") o Seleziona dove (colonna == 8) funziona. Voglio solo che 8 sia variabile e che l'operatore possa compilarlo da solo.
dt = tabella dati corrente();
col = colonna(dt,"MILL_X");
col_name_list = dt << ottieni i nomi delle colonne (string);
rdata = Nuova finestra("Quale parte vuoi controllare?",
<
<
X = Casella di modifica testo("Quale parte?"),
casella di testo ("Fare clic su OK per salvare"),
Casella dei pulsanti("OK",
XNo = X << Ottieni testo),
Casella dei pulsanti ("Annulla");
);
Mostra(XNo); //Mi mostra la stringa che è stata data, cioè se inserisco 8 mi mostra --> XNo = "8";
//Seleziona le righe desiderate in base ai valori nella colonna
dt <
Select where( :MILL_X == XNo ), // <--- Questo non funziona, seleziona l'intero dt invece del valore selezionato dalla colonna. Se inserisco :MILL_X == 8 funziona. Ma solo per il numero 8.
Finestra di dialogo (Modifica (Uguale (Colonna di origine ( col))), Mantieni la finestra di dialogo aperta (0))
);
Sottoinsieme( (Righe selezionate), Nome tabella di output( "X " || Char(ColletNo) || " ispezione" ) );
// Crea il grafico desiderato utilizzando le righe selezionate
Distribuzione(
Distribuzione continua(
Colonna( :"Y (μm)"n ),
Capacità del processo( LSL( -15 ), Obiettivo( 0 ), USL( 15 ) )
)
);
// Facoltativamente, puoi personalizzare ulteriormente il grafico qui
// Ad esempio, aggiungendo elementi aggiuntivi o opzioni di formattazione
dt << cancella seleziona;
dt << cancella la selezione della colonna;
Automazione e scriptingAccesso ai datiIngegneria della qualità e dei processi Ri: Confronto nell'istruzione Select Where ().Prova a convertire XNo in numero (Num(XNo) OPPURE usa la casella di modifica del numero. Potrebbe anche essere necessario modificare leggermente il riferimento alla colonna (aggiungere [] al confronto). Di seguito è riportato un esempio utilizzando la tabella Big Class, utilizzare valori compresi tra 12-17 e test
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
col = Column(dt, "age");
col_name_list = dt << get column names(string);
rdata = New Window( "Which part do you want to check?",
<<MODAL> XNo = "8"; //Seleziona le righe desiderate in base ai valori nella colonna dt << Seleziona Where(col[] == Num(XNo)); dt_subset = dt << Sottoinsieme (righe selezionate); dt << cancella seleziona;</MODAL>
Se sono consentiti valori specifici, potresti anche modificare il tuo selettore in modo che sia qualcosa che consenta all'utente di sceglierne solo quelli specifici MA inizia facendo funzionare questa versione e quindi considera quelle opzioni.
Ri: Confronto nell'istruzione Select Where ().Questa non è la soluzione specifica, ma ho appena scoperto che la colonna deve essere ordinale (o almeno non essere continua). Ora devo solo crearlo in modo tale da ottenere ancora tutte le altre colonne anziché solo la colonna dell'età. Aggiornerò quando avrò la soluzione corretta, ma grazie per questo. Sapevo che era qualcosa di stupido che non funzionava.
Ri: Confronto nell'istruzione Select Where ().Non ho idea del motivo per cui non ha funzionato prima, perché ho già provato l'istruzione Num() e anche col[]. Forse non li ho fatti contemporaneamente, non lo so, ho provato molte iterazioni ma ora funziona. Non è nemmeno necessario cambiare la colonna in continua. L'unica cosa che non ho mai provato prima e che è nel tuo script è "Names Default to here(1);" linea.