Supponiamo che in JSL crei un array associativo, quindi creo una nuova colonna in una tabella di dati con una formula che utilizza tale array per popolare la colonna in base alle voci in un'altra colonna.
Quando la tabella dei dati viene salvata, sembra mantenere quell'array associativo da qualche parte - dove è memorizzato? All'interno della tabella dei dati da qualche parte? C'è un modo per vederlo o modificarlo in seguito?
L'array associativo viene salvato nella memoria RAM finché la variabile non viene cancellata o lo spazio dei nomi in cui si trova non viene chiuso o la sessione JMP viene chiusa.Quello che potresti vedere che ti fa pensare che l'array sia stato salvato, è un paio di cose.
- Quando apri la tabella dati, verranno visualizzati i valori nella colonna della formula che esisteva quando la tabella dati è stata salvata.La formula non viene eseguita per ottenere ciò, sembra che gli ultimi valori vengano salvati con la colonna.Ma se tenti di aggiungere una nuova riga alla tabella dati, che forzerà l'esecuzione della formula, verrà visualizzato un errore.
- Se si salva e si chiude la tabella dati e quindi la si apre di nuovo, senza chiudere la sessione JMP, la formula potrebbe rilevare che l'array rimane ancora nella memoria RAM.Pertanto, consente l'esecuzione della formula.
Il modo in cui in genere gestisco le formule che richiedono elementi come un array associativo consiste nell'aggiungere la creazione dell'array nella formula, eseguendolo solo quando la formula viene eseguita per la prima volta.Un esempio semplice e reale sarebbe:
Se la matrice associativa viene creata con questa formula.
myArray = associative array(:age << get values);
Quindi per farlo funzionare in una formula dovresti semplicemente specificare di eseguire questo codice solo quando la formula sta eseguendo la prima riga, rendendola così disponibile a tutte le righe
If( Row() == 1,
myArray = Associative Array( :age << get values )
);
Con questo JSL come primo elemento nella tua formula, la formula funzionerà.