Ho uno script che utilizza una finestra con caselle di controllo, caselle combinate, modifica del numero e caselle di testo per inserire l'input dell'utente e quindi utilizzare l'input per eseguire l'analisi dei dati (vedere l'immagine allegata per l'aspetto della scatola). Per facilità d'uso con diverse serie di opzioni, ho incluso un pulsante di reset che chiude tutte le tabelle e i rapporti di dati aperti e cancella tutte le opzioni immesse. Solitamente il pulsante funziona correttamente, ma a volte genera un errore quando si tenta di ripristinare la casella di controllo per Intervallo di date individuale o la prima casella di modifica del testo in Inserisci codici NC. L'avviso di errore dice "Invia oggetto Scriptable in accesso o valutazione di 'Invia'". Ho incluso un'immagine della finestra di avviso e le opzioni che ho selezionato quando si è verificato l'errore. Lo script allegato è solo la parte in questione quindi è impostato per stabilire la casella di inserimento dati, quindi ottenere le opzioni immesse e può ripristinare e chiudere. Non sono sicuro di cosa accadrà con la casella di controllo e la casella di inserimento dati, poiché il resto di loro sembra resettare correttamente, quindi qualsiasi aiuto sarebbe apprezzato.


Si noti che, qualsiasi altro script o procedura che utilizza una di queste variabili o una tabella che potrebbe avere un nome di colonna come una di quelle variabili, anche se fosse aperta per pochi secondi, può entrare in conflitto con il nome dell'oggetto di visualizzazione.
Cercherò sicuramente negli spazi dei nomi. Se lo script veniva eseguito due volte quando si verifica l'errore, allora penso che ciò che stai proponendo lo risolva, ma quando viene premuto il pulsante di ripristino non viene generata una nuova finestra di immissione. Solo i valori delle caselle per prendere i dati vengono ripristinati ai valori predefiniti. Questo e il fatto che l'errore si verifica solo a volte e solo con alcune delle caselle di controllo mi porta a pensare che potrebbe esserci ancora qualcosa in corso.
Questo tipo di errore si verificherà quando l'oggetto non esiste più, oppure esiste un problema di scoping, un conflitto di nomi. Mi aspetto che a volte potrebbe essere causato da questo.
Posso riprodurre questo errore:
- Esegui il tuo script, imposta alcuni valori
- Esegui nuovamente il tuo script
- Chiudi la finestra di dialogo 2nd
- Vai alla prima finestra e seleziona Reset, l'errore si verificherà. Questo perché tutte le finestre di visualizzazione d1, d2, ecc. Sono state assegnate alla finestra di dialogo 2nd. Il ripristino sta tentando di accedere a un oggetto che non esiste più.
Programmazione con un riferimento a questo << Top genitore quindi trovando l'oggetto o usando la finestra namescape. finestra: d1, finestra: d2, ecc. risolverà questo
Un grande vantaggio della creazione di un'applicazione è che ogni istanza ha il proprio spazio dei nomi e facilita lo script.
Un altro approccio è quello di aggiungere alla parte superiore del tuo script Nomi predefiniti qui (1); e salvalo.
Chiudi tutte le istanze della finestra di dialogo.
Ora esegui questo script (cambiando il percorso se necessario)
Names Default to Here(1);
Include ("c:\temp\Reset Boxes Question Script.jsl", <<NEW context=""></NEW>Modificare alcuni valori nella prima finestra di dialogo, quindi chiudere la finestra di dialogo 2nd. Ora torna alla prima finestra (solo ripetendo i passaggi che hanno causato l'errore) e premi Reset. Senza problemi.
L'utilizzo di una sola Includi () con un nuovo contesto crea uno spazio dei nomi anonimo per il diaolog e i suoi oggetti con nome e il problema dell'ambito viene risolto.
Si dovrebbe leggere su namespace.