jmp 테이블 내에서 사용자별 링크를 생성하는 데 문제가 있습니다.문제: 공유 OneDrive 폴더에 jmp 파일이 있습니다. 다른 동료들은 이 OneDrive 폴더를 자신의 데스크톱에 동기화하여 우리 모두가 공유 jmp 파일에 쉽게 액세스할 수 있도록 합니다. jmp 파일 내부에는 jmp 파일과 동일한 공유 폴더에 있는 다른 파일에 대한 링크가 있습니다. 각 사람마다 사용자별 OneDrive 파일 경로가 있기 때문에 내 링크는 실제로 사용자별 파일 경로를 감지한 다음 사용자별 적절한 링크를 설정하는 공식입니다. 불행하게도 새로운 사람이 jmp 파일을 열 때 이러한 수식은 자동으로 다시 실행되지 않습니다. 저는 이 문제를 해결하기 위해 두 가지 옵션을 모색했지만 어느 쪽도 마음에 들지 않습니다.
1. 링크를 사용하기 전에 실행해야 하는 '수식 재실행' 스크립트가 있어야 합니다. 불행하게도 사람들은 이 스크립트를 잊어버립니다. 또한 사람들은 일반적으로 데이터의 하위 집합을 만든 다음 '수식 재실행' 스크립트를 실행하려고 시도하지만 수식 평가가 기본적으로 억제되어 있기 때문에 작동하지 않습니다.
2. '재실행 수식' 스크립트를 'OnOpen'으로 저장하여 누군가가 jmp 테이블을 열자마자 실행되도록 합니다. 불행하게도 이로 인해 프롬프트가 표시되고(첨부됨) 사람들은 너무 무서워서 열릴 때 '예'라고 대답할 수 없습니다. 그들은 그것이 뭔가를 망칠까봐 두려워합니다. (그들은 그것이 무엇을 위한 것인지조차 모릅니다)
질문
1. 하이퍼링크를 클릭하자마자 업데이트할 수 있는 방법이 있나요?
2. 'OnOpen' 팝업을 억제하거나 사용자가 수행해야 할 작업을 설명하기 위해 팝업을 편집할 수 있나요?
3. jmp 테이블이 열리자마자 수식을 업데이트할 수 있는 'OnOpen' 스크립트 외에 다른 방법이 있습니까?
도움을 주시면 감사하겠습니다. 감사해요!
매트
Re: jmp 테이블 내에서 사용자별 링크를 생성하는 데 문제가 있습니다.안녕 @Matt_컨버스 . 좋은 질문. 최선의 선택은 런타임에 빌드되도록 공유 파일의 경로를 일반화하는 것이라고 생각합니다. 이 파일의 세부 사항을 모르면 구체적으로 설명할 수 없지만 표현식 처리가 필요할 수 있습니다. 다른 세 가지 옵션은 다음과 같습니다.
- 하이퍼링크는 일반적으로 하드 코딩되어 있습니다. 당신이 그것을 어떻게, 어디서 사용하고 있는지에 대해 더 많이 알아야 할 것입니다.
- 예. 문제는 OnOpen이 실행되기 전에 사용자 사용자 기본 설정을 변경해야 한다는 것입니다.
- 내가 아는 바는 아니다
Re: jmp 테이블 내에서 사용자별 링크를 생성하는 데 문제가 있습니다.여기요 @돈맥코맥 !
신속한 답변에 감사드립니다. 자세한 내용을 추가하게 되어 기쁘게 생각합니다. 다음은 링크(예: 파일/폴더 경로)가 어떻게 다른지에 대한 예입니다.
- SEM 이미지 폴더에 대한 내 파일 경로: C:\Users\ mconvers \OneDrive - WL Gore & Associates, Inc\예제 공유 데이터베이스\SEM 라이브러리\4391
- 내 동료 파일 경로는 같은 폴더에 있습니다: C:\Users\ mjohnson \OneDrive - WL Gore & Associates, Inc\예제 공유 데이터베이스\SEM 라이브러리\4391
예제 테이블(첨부된 "Table1.jmp")에서 "SEM 폴더 경로" 열의 수식을 사용하여 사용자별 폴더 경로를 결정하는 방법을 볼 수 있습니다. 기본적으로 기본 테이블("Table1.jmp")의 파일 경로를 읽어 사용자별 디렉터리를 가져온 다음 "SEM Library..."를 추가합니다.
dt_name = "테이블1";
dt = 데이터 테이블( dt_name );
path_full = dt << 경로 가져오기();
name_file = dt_name || ".jmp";
n = Munger( path_full, 1, name_file );
path_folder = Substr( path_full, 1, n - 1 );
경로 = path_folder || "SEM 라이브러리" || "\" || Char( :데이터베이스 번호 );
그런 다음 이벤트 핸들러를 사용하여 하이퍼링크("SEM 폴더 링크" 열)를 설정했습니다. 전체 파일 구조를 이해하는 데 도움이 될 수 있도록 전체 압축 폴더를 첨부했습니다.
내가 어떻게 할 수 있는지 더 듣고 싶습니다." 런타임에 빌드되도록 공유 파일의 경로를 일반화합니다." 감사해요!
매트
Re: jmp 테이블 내에서 사용자별 링크를 생성하는 데 문제가 있습니다.%OneDrive% Windows 시스템 변수를 사용하여 기본 1 드라이브 폴더에 대한 사용자 경로를 가져올 수 있습니다.
환경 변수 가져오기("ONEDRIVE")를 사용합니다. 그것을 호출하고 URL에서 사용합니다.
Re: jmp 테이블 내에서 사용자별 링크를 생성하는 데 문제가 있습니다.첨부된 것과 같은 것은 어떻습니까? 모든 사용자에게 공통적인 부분을 포함하도록 폴더 경로를 단축하고 경로의 나머지 부분(즉, 고유한 부분)을 작성하도록 이벤트 핸들러를 변경했습니다.
Re: jmp 테이블 내에서 사용자별 링크를 생성하는 데 문제가 있습니다.환경 변수 가져오기( "ONEDRIVE" )를 사용할 수도 있습니다. 이벤트 핸들러에서... 필요할 때만 모든 행에 대해 실행되는 것을 원하지 않기 때문입니다. 
또한 OneDrive 시스템 변수가 설정되어 있지 않으면 Mac 및 Linux 컴퓨터에서는 작동하지 않을 수 있습니다.
JMP 파일이 네트워크의 한 위치(예: "예제 공유 데이터베이스" 폴더)에만 있는 경우 상대 경로로 형식이 지정된 URL을 사용할 수도 있습니다.
즉, 경로 = "..\SEM 라이브러리\" || Char( :데이터베이스 번호 );
이는 Mac에서도 작동합니다....하지만 jmp 파일은 "SEM Library"에서 바로 위 폴더에 있어야 합니다.
Re: jmp 테이블 내에서 사용자별 링크를 생성하는 데 문제가 있습니다.아... 상대 경로는 현재 폴더에 대한 단일 점입니다....
경로 = ".\SEM 라이브러리\" || Char( :데이터베이스 번호 );
Re: jmp 테이블 내에서 사용자별 링크를 생성하는 데 문제가 있습니다.@돈맥코맥 , 잘 됐어요! (단순 슬래시 하나를 백 슬래시로 변경해야했습니다)
편집한 스크립트가 내 문제의 첫 번째 부분, 즉 링크가 런타임에 구축되는 부분을 해결한 것 같습니다. 그러나 사용자가 일반적으로 겪는 두 번째 문제는 이 테이블의 하위 집합을 만든 다음 링크를 따라가기를 희망한다는 것입니다. 불행하게도 하위 집합은 저장되지 않으므로 읽을 수 있는 파일 경로가 없습니다. 여기에 제안사항이 있나요?
나는 사용할 수 있었다 @DByss 사용자의 onedrive 특정 환경을 얻으려는 의 제안이지만 일부 사용자가 변경하는 것을 본 "Table1"과 그 사이에 파일 경로 구조가 있습니다(따라서 사용자마다 일관성이 없을 수도 있음).
모든 도움에 감사드립니다!
매트
Re: jmp 테이블 내에서 사용자별 링크를 생성하는 데 문제가 있습니다.여기에 아이디어가 있습니다. 디렉토리 목록에 액세스하는 데 필요한 열을 저장하십시오. ID 열(1부터 N 행까지 순차적으로 번호가 매겨짐)을 첫 번째 열로 추가합니다. 이벤트 핸들러 스크립트를 이것으로 바꾸십시오.
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] ));
);
열 값은 목록에 로드되고 모든 작업은 테이블에서 조회해야 하는 값이 아닌 이러한 값을 기반으로 합니다(원본 테이블의 행 번호를 참조하는 ID 값 제외).
Re: jmp 테이블 내에서 사용자별 링크를 생성하는 데 문제가 있습니다.감사해요, @돈맥코맥 ! ID 열을 추가하고 이벤트 핸들러를 교체했습니다. 그러나 행 1의 링크를 클릭하면 "'myCustomFunctionNamespace:semFolderPath[ /*###*/rowID]' 액세스 또는 평가 시 행 1의 아래 첨자 문제"라는 오류가 발생합니다. "/*###*/"가 무엇을 가리키는지 아시나요? 함수 외부에서 스크립트를 실행할 수 있기 때문에 우리가 거의 가까워졌다는 것을 알고 있습니다(저장된 스크립트 참조). 하위 집합을 만들기 전에 링크를 테스트하고 있다는 점에 유의하세요(아직 하위 집합으로 시도하지 않았습니다).
귀하의 도움에 진심으로 감사드립니다.
매트
Re: jmp 테이블 내에서 사용자별 링크를 생성하는 데 문제가 있습니다.미안합니다 @Matt_컨버스 . 코드의 마지막에서 두 번째 줄은 다음과 같아야 합니다.
rowID = Column(thisTable,1)[iRow]
선택한 행(하위 집합)의 첫 번째 열 값을 참조하려고 합니다. 내가 가지고 있는 방식으로는 전체 열을 참조하는 것이었습니다.
Re: jmp 테이블 내에서 사용자별 링크를 생성하는 데 문제가 있습니다.@돈맥코맥 , 그걸 잡았어야 했는데! 감사합니다! 이것은 이제 하위 집합에도 적용됩니다! 이벤트 핸들러를 더 자주 사용해야겠습니다! 도움을 주셔서 정말 감사합니다.