come assegnare una colonna a un elenco?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />In JSL, esiste una funzione diag di colonna in cui una colonna in una tabella può essere assegnata a un elenco utilizzando la funzione ColList. Quando lo script viene eseguito, l'utente deve fare clic su un pulsante per eseguire l'assegnazione. Richiede l'input interattivo dell'utente.
Col_dlg = FinestraColonna(
Titolo ("Assegnazione variabile"),
::x = ColList("ID esecuzione", MinCol(1), MaxCol(1), Colonne(:LOTTO)),
.....
);
Esiste un modo per scrivere uno script in modo tale che una colonna possa essere assegnata a un elenco senza che l'utente faccia clic sul pulsante nella finestra di dialogo (nessuna finestra di dialogo verrà visualizzata durante l'esecuzione)?
Ho provato:
::x = ColList("ID esecuzione (richiesto)", MinCol(1), MaxCol(1), Colonne(:LOTTO));
::x = :LOTTO << Ottieni valori;
::x = Colonna(dt,"LOTTO");
tutto fallì. Qualche indizio?
Ri: come assegnare una colonna a un elenco?Scusa, colpa mia. La mia spiegazione non era chiara. Ciò che mi piace fare è utilizzare robuste assegnazioni var globali ad alcune colonne per sostituire la funzione Column Diag in modo che non sia richiesta alcuna risposta interattiva da parte dell'utente. Ecco la situazione:
nella mia routine principale, c'è un Column Diag in cui alcune colonne sono assegnate ad alcune variabili globali, che verranno chiamate in molte funzioni esistenti nelle librerie. Ci sono alcuni comandi usati in quelle funzioni lib:
N_x = NArticoli(x);
Colonna(dt, Eval(x2)) << Imposta proprietà("Livelli ordine riga", (1));
Grafico della variabilità(...)
Bivariato(..)
....
Non è consentita alcuna modifica a tali funzioni lib. Attualmente, le variabili globali assegnate utilizzando la funzione Column Diag funzionano bene senza alcun problema con le funzioni lib esistenti. Ma tutti i tentativi suggeriti sopra potrebbero funzionare per alcuni comandi, ma generare errori per altri.
Spero che la mia spiegazione questa volta sia chiara :-). O probabilmente aggiungere più confusione :-(.
John
Ri: come assegnare una colonna a un elenco?Non vedo alcun motivo specifico per imitare l'output ColList qui, ma puoi creare un elenco con una colonna come questa:
dt = Aprire ( "$SAMPLE_DATA/Classe grande.jmp" ) ;
col = { colonna ( dt , "Nome" )} ;
colonna ( dt , col ) << Imposta proprietà ( "Livelli di ordine delle righe" , ( 1 )) ;
Ma per il tuo esempio una variabile di colonna normale è più semplice:
dt = Aprire ( "$SAMPLE_DATA/Classe grande.jmp" ) ;
col = colonna ( dt , "Nome" ) ;
col << Imposta proprietà ( "Livelli di ordine delle righe" , ( 1 )) ;
Ancora un altro modo basato su un elenco di colonne:
dt = Aprire ( "$SAMPLE_DATA/Classe grande.jmp" ) ;
:: X = ( dt << ottenere i nomi delle colonne ())[ 1 ] ;
:: X << Imposta proprietà ( "Livelli di ordine delle righe" , ( 1 ) ) ;
Ri: come assegnare una colonna a un elenco?Sì, utilizzando
::x2 = Colonna(dt, "LOTTO") << Ottieni valori;
mi fornirà un elenco con tutti i valori nella colonna LOT, ma questo ::x2 non "agirà" esattamente come ::x assegnato utilizzando la funzione ColList dalla colonna Diag. Ad esempio, il seguente comando
Colonna(dt, Eval(x)) << Imposta proprietà("Livelli ordine riga", (1));
con ::x assegnato utilizzando la funzione ColList, ma riceverò un errore quando chiamo
Colonna(dt, Eval(x2)) << Imposta proprietà("Livelli ordine riga", (1));
Il messaggio di errore è:
"impossibile trovare la colonna nell'accesso o nella valutazione di 'Colonna' , Colonna( dt, Eval( x ) )"
Per ::x assegnato dalla funzione ColList, Eval(x) mi darà "LOT";
Per ::x2 assegnato in questo modo, Eval(x) mi fornirà un elenco con tutti i valori nella colonna LOT.
Quello che mi piace fare è: per trovare un modo per assegnare una colonna a un elenco, agire ESATTAMENTE come la funzione ColList, ma senza interfaccia utente con la finestra diaglog o risposta interattiva dell'utente. Se qualcuno potesse fornirmi i codici per la funzione ColList, sarebbe fantastico!
Ri: come assegnare una colonna a un elenco?Il penultimo tentativo dovrebbe aver funzionato, ma forse la tabella contenente la colonna LOT non era la tabella corrente.La seguente sintassi funziona:
dt = Aprire ( "$SAMPLE_DATA/Classe grande.jmp" ) ;
x1 = : nome << ottenere valori ;
x2 = colonna ( dt , "nome" ) << ottenere valori ;
Assicurati che la variabile che punta alla tabella dati sia impostata.Per esempio:
dt = tabella dati ( "MyLots" ) ; // Tabella contenente la colonna LOT
:: X = Colonna ( dt , "QUANTITÀ" ) << Ottieni valori ;