<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />il mio bisogno è: impilare una tabella con una selezione dinamica (bene, sorta) della colonna da impilare.
Ho risolto con una tabella di configurazione in cui i nomi delle colonne da impilare sono memorizzati come valori, quindi eseguo un "get values" e
assegna il risultato a una stringa. alla fine mando questa stringa per impilare il comando.
funziona, ma ...
ogni volta nel mio registro dice
Errori trovati. in accesso o valutazione di 'colonne', Bad Argument (Eval (d))
, colonne (Eval (d)) "
senza eval non funziona, con eval funziona perfettamente ma inquina il mio log. qualcuno sa perché?
ecco il codice:
conf3 = open ("\ qui è la tabella di configurazione");
// load config, è un file excel che deve essere modificato dagli utenti per scegliere quale "classe" vogliono nel report finale
// questi insiemi di classi sono abbastanza stabili e la maggior parte delle volte non sono toccati dall'ultima esecuzione, ma a volte una classe deve essere aggiunta o modificata
// è semplicemente così: column1: black white red column2: red white ecc
d = Column (conf3, i) << ottiene i valori;
// i è l'indice
// Lo faccio in un ciclo, ogni volta che una tabella diversa viene impilata leggendo una colonna diversa per un set di stack diverso
// qui ottengo i valori dalla i-esima colonna della config e asserendola alla stringa d -> è buona?
snowhite = Apri ("\ jmp_tables \ snowhite.jmp", invisibile);
// carica la tabella da impilare
snowhite << Stack (
colonne (eval (d)),
Colonna Etichetta di origine ("classe"), Colonna di dati in pila ("densità"), Nome ("Colonne non impilate") (Mantieni (: Dividi,: ID lotto,: ID dispositivo,)), Tabelle di output) ;
si, supponevo che potesse essere un problema quando ho notato che c'era qualche "" valore.
sfortunatamente, come hai detto, l'elenco proviene da una colonna di file Excel, che inserisce automaticamente una cella vuota alla fine per avere tutte le colonne della stessa altezza, quindi i valori "" sono inevitabili.
Proverò la tua soluzione, grazie!
e sì, non ero corretto nella mia spiegazione: d non è una stringa ma una lista di stringhe, perché il comando stack ha bisogno di una lista e non di una stringa!
immagino che d non è una stringa qui, ma un elenco di stringhe come << ottenere valori produce una lista (o matrice per variabili continue). Se la classe impostata in conf3 differisce in numero di elementi, la tabella avrà tante righe quante quelle più grandi. Quindi per alcune scelte d conterrà elementi stringa vuoti, ad esempio "". Questa potrebbe essere la causa dell'errore segnalato (le colonne devono avere un nome diverso da "").
Con la riga di codice qui sotto puoi rimuovere tutte le istanze di "" da d prima dell'accatastamento. Potrebbe essere un modo più semplice per riordinare le liste, ma dovrebbe funzionare.
Mentre ( contiene ( d , "" ) > 0 , Rimuovere da ( d , contiene ( d , "" ) ) ) ;