Apertura di più DataTable<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Quindi voglio creare un'applicazione che chiederà all'utente di specificare un certo numero di tabelle di dati dopo il quale l'utente potrà scegliere le tabelle corrispondenti. Inoltre vorrei aggiungere colonne a ciascuna di queste tabelle. Sono ancora nuovo a jmp/jsl ma di seguito è riportato il mio script che ovviamente non funziona. Qualsiasi aiuto è ben apprezzato;
Nuova finestra ("Numero di tabelle dati",
<
Casella di testo ("Numero di tabelle dati"),
variabilebox = Casella di modifica numero(),
Casella dei pulsanti ("OK"),
Casella dei pulsanti ("Annulla")
);
N = Casella variabile << ottieni;
For( i = 1, i <= N elementi( dt ), i++,
dt = Apri()
Nomi predefiniti qui(1);
dt=Tabella dati correnti (i);
dt << Nuova colonna("ColonnaA", Numerico, continuo, Formato("Migliore", 5));
dt << Nuova colonna("ColonnaB", Numerico, continuo, Formato("Migliore", 5));
);
PS: so che lo script per aggiungere colonne aggiuntive deve andare in qualche modo nel ciclo For, ma se riesco anche ad aprire le tabelle di dati, come posso aggiungere le colonne.
PMroz jordanhiller@jmp chris.kirchberg CHFields Mark Bailey
Ri: Apertura di più DataTableOh wow, funziona. Grazie!!!
Ri: Apertura di più DataTableOvviamente! Mille grazie per avermi chiarito le idee, Melanie. . .
Chiunque legga questo thread dovrebbe anche notare che (contrariamente ai commenti nel codice) la parola chiave "multiple" è rispettata da OS/X e Windows.
Ri: Apertura di più DataTableL'argomento multiplo di PickFile() è una parola chiave, non un valore booleano. Prova questo:
Seleziona File (
"Seleziona uno o più file" , // Richiesta
"$campione_dati" , // Cartella iniziale
{ "File JMP|jmp;jsl;jrn" , "Tutti i file|*" } , // Elenco dei filtri di file da applicare (ignorato da OS/X)
1 , // Filtro file iniziale da applicare (indice dell'elemento nell'elenco sopra)
0 , // Flag di salvataggio: specifica una finestra "Salva" o "Apri". Impostare rispettivamente un valore pari a 1 o 0.
Vuoto () , //File predefinito
"multiplo" // Multiplo: se 'Save Flag' = 0, l'utilizzo del valore 1 consente l'apertura di più file (ignorato da OS/X)
) ;
Tieni presente che per utilizzare l'argomento multiplo, devono essere specificati tutti gli argomenti precedenti: non puoi tralasciare i 2 flag e il file predefinito, ad esempio.
Ri: Apertura di più DataTableHmm. Chiederò al team di ricerca e sviluppo perché sembra che dovrebbe funzionare.
È sempre meglio utilizzare le funzioni integrate, se possibile, ma potresti sempre fare qualcosa come:
NomiDefaultToHere ( 1 ) ;
dir = ScegliDirectory ( "Sposta nella cartella contenente i tuoi file" , "$DESKTOP" ) ;
ora = Nuova finestra ( "Apri più file" ,
PanelBox ( "Seleziona uno o più file" ,
libbre = ListBox ( FileInDirectory ( dir )) ,
LineUpBox ( NCol ( 2 ) ,
ButtonBox ( "OK" , OKScript ) ,
ButtonBox ( "Annulla" , ora << chiudi la finestra )
)
)
) ;
OKScript =
Espr (
ora << chiudi la finestra ;
File = libbre << getSelected ;
Per ( F = 1 , F <= Articoli ( File ) , F ++, Aprire ( dir || "/" || File [ F ])) ;
) ;
Ri: Apertura di più DataTableGrazie Ian, sei stato davvero utile. Ho testato il codice sopra e funziona anche su Windows. Sono stato anche in grado di modificare e incorporare il codice nel mio lavoro. Tuttavia, posso aprire solo un file alla volta. Dalla tua spiegazione, l'aggiunta di quest'ultimo 1 nella funzione Scegli file dovrebbe consentire l'apertura di più file ma ciò non funziona sul mio computer (Windows tra l'altro).Esiste un modo per aggirare questo problema in modo da poter aprire più file contemporaneamente? Grazie
Ri: Apertura di più DataTableQuindi ora capisco che la tua domanda riguarda la selezione di quali file aprire. . .
Sembra che 'PickFile()' sia già sufficientemente flessibile per fare ciò di cui hai bisogno (vedi 'Aiuto > Indice di scripting').
Nella misura in cui deve interagire con il sistema operativo, potresti aspettarti qualche leggera differenza tra Windows e OS/X, e sembra che sia il caso in questo caso. Sfortunatamente, però, non ho un computer Windows su cui testare il codice seguente (suppongo anche che per selezioni multiple 'PickFile()' restituirà effettivamente un elenco):
Nomi predefiniti qui ( 1 ) ;
// Usa 'PickFile()' per ottenere un elenco di file da aprire (solo Windows)
fileList =
Seleziona File (
"Seleziona uno o più file" , // Richiesta
"$DESKTOP" , // Cartella iniziale
{ "File JMP|jmp;jsl;jrn" , "Tutti i file|*" } , // Elenco dei filtri di file da applicare (ignorato da OS/X)
1 , // Filtro file iniziale da applicare (indice dell'elemento nell'elenco sopra)
0 , // Flag di salvataggio: specifica una finestra "Salva" o "Apri". Impostare rispettivamente un valore pari a 1 o 0.
Vuoto () , //File predefinito
1 // Multiplo: se 'Save Flag' = 0, l'utilizzo del valore 1 consente l'apertura di più file (ignorato da OS/X)
) ;
// Se viene selezionato un solo file, fileList non sarà un elenco, quindi dobbiamo crearlo da soli
Se ( ! IsList ( fileList ) , fileList = ListaEval ({ fileList })) ;
// Apre i file e memorizza i nomi delle tabelle JMP corrispondenti
tableNames = {} ;
per ( F = 1 , F <= Articoli ( fileList ) , F ++,
dt = Aprire ( fileList [ F ]) ;
Inserire ( tableNames , dt << getNome ) ;
) ;
Ri: Apertura di più DataTableCiao Ian,
Grazie per il feedback, farò del mio meglio per spiegarmi meglio. Voglio lo script che chiede a un utente il numero di tabelle dati da aprire, quindi richiede all'utente di selezionare le tabelle da aprire corrispondenti al numero chiesto in precedenza.L'algoritmo sarà simile al seguente:
- Esegui lo script
- All'utente viene chiesto quante tabelle dati aprire (una finestra modale renderà le cose più semplici) es: l'utente digita dire 3
- All'utente viene quindi chiesto di scegliere le 3 tabelle dati che preferisce
- Aggiungi "Colonna A" e "Colonna B" a ciascuna delle 3 tabelle di dati
Spero che questo aiuti a chiarire meglio il problema. Grazie ancora!
Ri: Apertura di più DataTablePenso che dovresti fornire qualche dettaglio in più su ciò che stai cercando, per favore.
Supponendo che per il primo passaggio desideri consentire le selezioni dalle tabelle aperte (piuttosto che le selezioni di quali tabelle aprire), dai un'occhiata a:
NomiDefaultToHere ( 1 ) ;
// Mostra le tabelle aperte nella sessione e consente all'utente di selezionarne alcune
openTables = {} ;
Per ( T = 1 , T <= NTabella () , T ++, Inserire ( openTables , Tabella dati ( T ) << getNome )) ;
ora =
Nuova finestra ( "Seleziona i tavoli che desideri" ,
libbre = ListBox ( openTables ) ,
LineUpBox ( NCol ( 2 ) , ButtonBox ( "OK" , OKscript ) , ButtonBox ( "Annulla" , ora << chiudi la finestra ))
) ;
// Fa qualcosa con le tabelle selezionate (in questo caso, stampa e basta)
OKScript =
Espr (
ora << Chiudi la finestra ;
Tabelle selezionate = libbre << getSelected ;
Pulisci il registro () ;
Se ( Articoli ( Tabelle selezionate ) > 0 ,
Per ( T = 1 , T <= Articoli ( Tabelle selezionate ) , T ++,
Stampa ( "Tavolo " || Tabelle selezionate [ T ] || " selezionato." )
) ,
Stampa ( "Nessun tavolo selezionato." )
) ;
) ;