Problemi nella creazione di collegamenti specifici dell'utente all'interno di una tabella jmpProblema: ho un file jmp che si trova in una cartella OneDrive condivisa. Altri colleghi sincronizzano questa cartella OneDrive sul proprio desktop in modo che tutti abbiamo un facile accesso al file jmp condiviso. All'interno del file jmp sono presenti collegamenti ad altri file che risiedono nella stessa cartella condivisa del file jmp. Poiché ogni persona ha un percorso file OneDrive specifico dell'utente, i miei collegamenti sono in realtà formule che rilevano il percorso file specifico dell'utente per quindi impostare il collegamento appropriato specifico dell'utente. Sfortunatamente, queste formule non vengono rieseguite automaticamente quando qualcuno apre il file jmp. Ho esplorato due opzioni per risolvere questo problema e non sono un fan di nessuna delle due:
1. avere uno script di 'rieseguizione delle formule' da eseguire prima di utilizzare un collegamento: sfortunatamente, le persone si dimenticano di questo script. Inoltre, le persone comunemente creano sottoinsiemi di dati e poi provano a eseguire lo script "riesegui formule", ma non funziona perché le valutazioni delle formule vengono soppresse per impostazione predefinita.
2. salvare uno script di "riesegui formule" come "OnOpen" in modo che venga eseguito non appena qualcuno apre la tabella jmp: sfortunatamente, ciò si traduce nella visualizzazione di un prompt (allegato) e le persone sono troppo spaventate per dire "sì" quando si apre perché hanno paura che rovini qualcosa (non sanno nemmeno a cosa serva)
Domande
1. Esiste un modo per aggiornare il collegamento ipertestuale non appena viene fatto clic?
2. Posso sopprimere il popup "OnOpen" o modificare il popup per spiegare cosa dovrebbe fare l'utente?
3. Esiste un altro modo oltre allo script "OnOpen" che consenta l'aggiornamento delle formule non appena viene aperta una tabella jmp?
Qualsiasi aiuto è apprezzato. Grazie!
opaco
Ri: Problemi nella creazione di collegamenti specifici dell'utente all'interno di una tabella jmpCIAO @Matt_Converse . Buona domanda. Penso che la soluzione migliore sarebbe generalizzare i percorsi nel file condiviso in modo tale che vengano creati in fase di esecuzione. Non conoscendo i dettagli di questo file, sarebbe impossibile fornire dettagli, ma potrebbe benissimo coinvolgere la gestione delle espressioni. Per quanto riguarda le altre tre opzioni:
- I collegamenti ipertestuali sono in genere hardcoded. Dovrei sapere di più su come e dove li usi.
- SÌ. Il problema è che dovresti modificare le Preferenze utente dell'utente prima che OnOpen venga eseguito.
- Non che ne sia a conoscenza
Ri: Problemi nella creazione di collegamenti specifici dell'utente all'interno di una tabella jmpEHI @DonMcCormack !
Grazie per la pronta risposta Sono felice di aggiungere ulteriori dettagli. Ecco un esempio di come variano i collegamenti (ovvero i percorsi di file/cartelle):
- il percorso del mio file in una cartella di immagini SEM: C:\Users\ mconvers \OneDrive - WL Gore & Associates, Inc\Esempio di database condiviso\Libreria SEM\4391
- i miei colleghi hanno il percorso del file nella stessa cartella: C:\Users\ mjohnson \OneDrive - WL Gore & Associates, Inc\Esempio di database condiviso\Libreria SEM\4391
Nella tabella di esempio ("Table1.jmp", allegata), vedrai come utilizzo una formula nella colonna "Percorso cartella SEM" per determinare il percorso di una cartella specifica dell'utente. Essenzialmente legge il percorso del file della tabella principale ("Table1.jmp") per ottenere la directory specifica dell'utente e quindi aggiunge "Libreria SEM..."
dt_name = "Tabella1";
dt = Tabella dati (dt_name);
percorso_completo = dt << Ottieni percorso();
nome_file = dt_nome || ".jmp";
n = Munger(percorso_completo, 1, nome_file);
percorso_cartella = Substr( percorso_completo, 1, n - 1 );
percorso = percorso_cartella || "Biblioteca SEM" || "\" || Char(:Numero database);
Quindi utilizzo un gestore eventi per impostare il collegamento ipertestuale (colonna "Collegamento cartella SEM"). Ho allegato una cartella compressa completa nel caso in cui ti aiuti anche a farti un'idea della struttura complessiva del file.
Mi piacerebbe sapere di più su come potrei " generalizzare i percorsi nel file condiviso in modo che vengano creati in fase di esecuzione". Grazie!
opaco
Ri: Problemi nella creazione di collegamenti specifici dell'utente all'interno di una tabella jmpÈ possibile utilizzare la variabile di sistema Windows %OneDrive% per ottenere il percorso degli utenti alla cartella dell'unità di base;
utilizzare Ottieni variabile d'ambiente ("ONEDRIVE"); per chiamarlo e utilizzarlo nell'URL.
Ri: Problemi nella creazione di collegamenti specifici dell'utente all'interno di una tabella jmpChe ne dici di qualcosa come quello allegato? Ho accorciato il percorso della cartella per contenere la parte comune a tutti gli utenti e modificato il gestore eventi per creare la parte rimanente (ovvero la parte univoca) del percorso.
Ri: Problemi nella creazione di collegamenti specifici dell'utente all'interno di una tabella jmpPuoi anche utilizzare Ottieni variabile d'ambiente ("ONEDRIVE"); nel gestore eventi... poiché non vuoi che venga eseguito per ogni riga, proprio quando è necessario 
Inoltre probabilmente non funziona per Mac e macchine Linux a meno che non sia impostata la variabile di sistema OneDrive...
Se il file JMP si troverà solo in un posto sulla rete (ad esempio nella cartella "Esempio di database condiviso") potresti anche utilizzare un URL formattato come percorso relativo.
cioè percorso = "..\Libreria SEM\" || Char(:Numero database);
Dovrebbe funzionare anche su Mac....ma il file jmp deve trovarsi nella cartella direttamente da "Libreria SEM"
Ri: Problemi nella creazione di collegamenti specifici dell'utente all'interno di una tabella jmpdoh... il percorso relativo sarebbe un singolo punto per la cartella corrente....
percorso = ".\Libreria SEM\" || Char(:Numero database);
Ri: Problemi nella creazione di collegamenti specifici dell'utente all'interno di una tabella jmp@DonMcCormack , ha funzionato benissimo! (Ho dovuto solo cambiare una barra in avanti con una barra rovesciata)
Penso che il tuo script modificato risolva la prima parte del mio problema, ovvero i collegamenti vengono creati in fase di esecuzione. Tuttavia, la seconda sfida che i miei utenti incontrano comunemente è che creano sottoinsiemi di questa tabella e quindi sperano di seguire i collegamenti. Sfortunatamente, i sottoinsiemi non vengono salvati e quindi non hanno un percorso file da leggere. Qualche suggerimento qui?
Potrei usare @DByss di ottenere l'ambiente specifico di OneDrive dell'utente, ma esiste una struttura del percorso del file tra questo e "Table1" che ho visto modificare alcuni utenti (quindi anche quello potrebbe non essere coerente da utente a utente).
Grazie per tutto l'aiuto!
opaco
Ri: Problemi nella creazione di collegamenti specifici dell'utente all'interno di una tabella jmpEcco un'idea. Salva le colonne necessarie per accedere agli elenchi delle directory. Aggiungi una colonna ID (numerata in sequenza da 1 a N righe) come prima colonna. Sostituisci lo script del gestore eventi con questo
Function( {thisTable, thisColumn, iRow},{rowID},
If(!Namespace Exists("myCustomFunctionNamespace"),
New Namespace("myCustomFunctionNamespace");
myCustomFunctionNamespace:thisPath = Substr(thisTable << Get Path,1,Contains(thisTable << Get Path,"/",-1));
myCustomFunctionNamespace:semFolderPath = Column(thisTable,"SEM Folder Path << Get Values");
);
rowID = Column(thisTable,1);
Open(Char(myCustomFunctionNamespace:thisPath || "/" || myCustomFunctionNamespace:semFolderPath[ rowID] ));
);
I valori delle colonne vengono caricati negli elenchi e tutte le operazioni si basano su questi valori anziché su qualcosa che deve essere cercato in una tabella (eccetto il valore ID, che fa riferimento al numero di riga della tabella originale).
Ri: Problemi nella creazione di collegamenti specifici dell'utente all'interno di una tabella jmpGrazie, @DonMcCormack ! Ho aggiunto una colonna ID e ho sostituito il gestore eventi; tuttavia, ricevo questo errore quando faccio clic sul collegamento nella riga 1: "Problema di subscript alla riga 1 nell'accesso o nella valutazione di 'myCustomFunctionNamespace:semFolderPath[ /*###*/rowID]'". Capisci a cosa si riferisce "/*###*/"? So che siamo vicini perché posso far eseguire lo script al di fuori di una funzione (vedi il mio script salvato). Tieni presente che sto solo testando il collegamento prima di creare un sottoinsieme (non l'ho ancora provato con un sottoinsieme).
Apprezzo davvero il tuo aiuto.
opaco
Ri: Problemi nella creazione di collegamenti specifici dell'utente all'interno di una tabella jmpMi dispiace @Matt_Converse . La penultima riga di codice dovrebbe essere
rowID = Column(thisTable,1)[iRow]
Si desidera fare riferimento al valore della prima colonna nella riga selezionata (dal sottoinsieme). Per come l'avevo capito, faceva riferimento all'intera colonna.
Ri: Problemi nella creazione di collegamenti specifici dell'utente all'interno di una tabella jmp@DonMcCormack , avrei dovuto prenderlo! Grazie! Adesso funziona anche per i sottoinsiemi! Dovrò iniziare a utilizzare i gestori di eventi più spesso! Apprezzo davvero l'aiuto.