Come popolare la casella combinata con valori distinti?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />CIAO
Qual è il modo migliore per popolare una casella combinata con i valori distinti di una colonna?? Voglio essere in grado di chiedere all'utente quali dati (in questo caso il numero di parte) desidera analizzare, e quindi in base alla sua selezione il codice creerebbe una nuova tabella di sottoinsiemi solo del valore selezionato.
Immagino che il codice sia qualcosa del genere:
valori = : nomecolonnaqui << Ottieni valori distinti ;
Nuova finestra ( "Esempio" ,
cb = Casella combinata ( valori ) ,
Casella dei pulsanti ( "OK" )
) ;
Qualche codice qui per creare una tabella di sottoinsiemi...
Qualcuno sa quale sarebbe la pratica migliore per farlo??
Grazie
Come popolare la casella combinata con valori distinti?Non ho mai provato la funzione su una colonna numerica.Risultati interessanti.
Ho eseguito alcuni test sulle prestazioni degli array associativi rispetto al riepilogo per determinare valori univoci ed è stato abbastanza uniforme.Ad esempio, ho utilizzato una tabella con 180.000 righe.Entrambi i metodi hanno impiegato 4 secondi per determinare valori univoci per 6 colonne.
Ri: Come popolare la casella combinata con valori distinti?Bella funzione! Se la colonna è numerica, allora Summarize() è effettivamente preferibile al metodo Associative Array(). Riepiloga inserisce virgolette doppie attorno ai livelli numerici mentre gli elementi nell'elenco generato dai tasti AA<
Per altri usi quando è richiesto il numero anziché Char(numero), l'approccio AA potrebbe essere una scelta migliore. Anche il metodo AA è generale in quanto non è limitato alle colonne e accetta molti tipi di dati come elementi dell'elenco (matrici, espressioni...).
Ri: Come popolare la casella combinata con valori distinti?Sembra che le caselle combinate siano incasinate con voci vuote.Se invece usi una casella di riepilogo funziona, anche se una delle voci è vuota, cosa che non desideri.
Ecco la funzione che utilizzo per ottenere valori univoci da una colonna, che utilizza il file Riassumere comando:
//------------------------------------------------ ---------------------
/* Nome funzione Ottieni valori univoci
Descrizione: ottieni i valori univoci per una colonna.Per esempio:
Indicazioni
------------
AAAAA
BBBBB
AAAAA
CCCCC
CCCCC
unique_list = ottieni valori univoci (:Indicazioni)
restituirà {"AAAAA", "BBBBB", "CCCCC"}
Argomenti:
descrittore di colonna dtcol per cui calcolare valori univoci
*/
Ottieni valori unici = Funzione ( { dtcol } , { locale predefinito } ,
// Trucchi Eval/expr per farlo funzionare.
eval ( valutazione espr (
Riassumere ( elenco_unico = Di ( espressione ( dtcol ))))) ;
elenco_unico ;
) ; // finisce per ottenere valori univoci
Ecco un esempio che mostra come utilizzare la funzione.Ho letto in anticipo la tabella Dati fisici dell'auto e ho cancellato alcune voci nella colonna Paese.
dt = Aprire ( "$sample_data\Car Physical Data.jmp" ) ;
elenco_paesi = ottenere valori unici ( Colonna ( dt , "Paese" ) ) ;
per ( io = nitems ( elenco_paesi ) , io > 0 , io --,
stampa ( io ) ;
Se ( elenco_paesi [ io ] == "" ,
rimuovere da ( elenco_paesi , io ) ;
)
) ;
nw1 = Nuova finestra ( "Esempio" ,
cb = Casella combinata ( elenco_paesi ) ,
Casella dei pulsanti ( "OK" , nw1 << chiudi la finestra )
) ;
nw2 = Nuova finestra ( "Esempio" ,
libbre = Casella di riepilogo ( elenco_paesi ) ,
Casella dei pulsanti ( "OK" , nw2 << chiudi la finestra )
) ;
Suppongo che la cosa migliore da fare sia aggiungere la rimozione dello spazio vuoto alla funzione.
Come popolare la casella combinata con valori distinti?L'ho fatto funzionare utilizzando un ciclo For che ignora tutte le celle vuote. Ecco il codice per chiunque sia curioso:
partArray = Matrice associativa () ;
Per ( io = 1 , io <= N righe ( dt ) , io ++,
Se ( Parte [ io ] != "" ,
partArray << Inserire ( Parte [ io ] )
)
) ;
partArray = partArray << prendi le chiavi ;
Come popolare la casella combinata con valori distinti?Ho scoperto che questo accade quando c'è una cella vuota nella colonna. Se le celle vuote vengono eliminate, funziona correttamente. Qualche idea sul perché non funzionerà con le celle vuote??
Come popolare la casella combinata con valori distinti?Grazie. Questo era proprio quello che volevo.
Tuttavia, questo non funziona per il mio tavolo. Se utilizzo il tuo codice con la tabella di esempio "Big Class" funziona correttamente. Tuttavia, se sostituisco la tabella con quella con i miei dati, la casella combinata sarà vuota. Qualche idea sul perché?? La modifica delle colonne fa sì che la larghezza della casella combinata cambi, ma è ancora vuota. Ho controllato le proprietà della colonna e sono le stesse di quelle di Bog Class.
Qualche idea?
grazie ancora
Come popolare la casella combinata con valori distinti?UN post recente sul blog di JMP presentato diversi modi per ottenere un elenco di valori univoci. Un approccio che ho imparato da lì utilizza gli array associativi.
dt = Aprire ( "$SAMPLE_DATA/Classe grande.jmp" ) ;
part = Matrice associativa ( ( : sesso << ottenere valori ) ) << prendi le chiavi ;
Nuova finestra ( "Esempio" , cb = Casella combinata ( ( part ) ) , Casella dei pulsanti ( "OK" ) ) ;