쿼리 빌더 스크립트(쿼리 후 스크립트 포함)를 다른 스크립트에 통합여보세요,
저는 쿼리 빌더와 그래프 빌더를 사용하여 지속적으로 서버에서 데이터를 가져오고 플롯하고 결과를 저장하는 몇 가지 스크립트를 조합했습니다(JMP 13에서). 최근에 저는 이 스크립트 중 여러 개를 Include()를 사용하여 한 번에 모두 실행하는 단일 스크립트로 연결하려고 시도했습니다. 잘 작동합니다. 지금 직면하고 있는 문제는 모든 디렉터리가 하드 코딩되어 있다는 것입니다. Get Default Directory()와 같은 것을 사용하여 이 광범위한 스크립트 모음을 다른 컴퓨터로 옮길 수 있습니다.
안타깝게도 다음과 같은 문제가 발생했습니다.
- Get Default Directory()가 'Post-Query Script' 내에서 사용되면 이 스크립트가 저장된 위치에 상관없이 '/' 를 반환합니다.
-쿼리 후 스크립트에서 생성된 데이터 테이블/그래프를 변수에 저장할 때 해당 변수는 외부에 존재하지 않는 것 같습니다(또는 액세스할 수 없음).
쿼리 후 스크립트.
- 쿼리 후 스크립트 외부에서 생성된 모든 변수는 내부에서 사용할 수 없습니다.
// Main File
directory = Get Default Directory();
fileNames = Files In Directory( directory );
For( iFile = 1, iFile <= N Items( fileNames ), iFile++,
filename = fileNames[iFile];
If( Ends With( filename, ".jsl" ),
Include( directory || script_folder || filename, invisible );
);
);
// Example Post-Query File section
gb = Graph Builder(
// graph details
);
// directory = Get Default Directory(); // Another method attempted
myPath = directory || "Report\";
myName = "Example";
fileName = myPath || myName || ".pptx";
myTemplate = directory || "Template.pptx";
Report( gb ) << save presentation( fileName, Template( myTemplate ), Outline Titles( "Hide" ) );
gb << close window;
Close All( data tables );
이견있는 사람?
스크립팅Re: 쿼리 작성기 스크립트(쿼리 후 스크립트 포함)를 다른 스크립트에 통합응용 프로그램에 대한 추가 기능을 만드는 것을 고려해야 합니다.그러면 파일이 있는 위치에 대한 문제가 해결됩니다.추가 기능은 별칭을 파일 위치와 연결합니다.추가 기능 "별칭"이 com.company.dept.mygreatapp인 경우 다음과 같은 파일을 참조할 수 있습니다.
include("$ADDIN_HOME(com.company.dept.mygreatapp)\DoSomethingGreat.jsl");Re: 쿼리 작성기 스크립트(쿼리 후 스크립트 포함)를 다른 스크립트에 통합귀하의 게시물에는 해결해야 할 몇 가지 항목이 포함되어 있습니다.
- Windows에서 작업하는 경우 Get Default Directory()는 마지막으로 사용된 디렉토리를 가져오지 않습니다. 프로그램에서 프롬프트가 표시되면 기본 디렉토리 설정을 사용하면 기본 디렉토리 가져오기()가 이 값을 반환합니다.
- 참조/변수를 유지하기 위해 네임스페이스 또는 전역 연관 배열을 사용하는 것이 좋습니다.프로그램의 인스턴스가 한 번에 두 개 이상 실행되는 경우 각 인스턴스에 대해 고유하도록 익명 네임스페이스로 만드십시오.연관 배열의 경우 ::varRef_aa = Associative Array(); ::varRef_aa << 기본값 설정(-9999); 그런 다음 스크립트에서 ::varRef_aa[a] = 1; NameSpace 사용의 이점은 의도하지 않은 Clear Globals()가 네임스페이스나 그 내용을 삭제하지 않는다는 것입니다.
- 나는 모든 개체가 다른 페이지에 저장되고 크기 조정에 대한 제어가 거의 없기 때문에 프레젠테이션 저장을 좋아하지 않습니다. 라는 무료 외부 프로그램을 사용합니다. P3ICLI . 따라서 일반적으로 작업 또는 보고서에 대해 고유한 출력 디렉터리를 만든 다음 원하는 보기를 해당 디렉터리의 그림에 저장합니다. 슬라이드 1, 2 등과 같이 원하는 출력을 저장하면 ~할 수 있다 저장된 디렉토리에 대해 Directory()에 파일 목록을 만들고 for 루프에서 프레젠테이션 저장을 사용하여 PPTX에 파일 목록을 추가하여 프레젠테이션 저장을 사용합니다. 또한 그림을 저장하면 다중 개체 표시를 가질 수 있고 저장할 수 있으며 프리젠테이션 저장을 사용할 때 모든 항목이 같은 페이지에 있습니다.PPTX 보고서를 일부 제어할 수 있습니다.
마지막으로 예, Open Database(connect_str, ...) 및 Create Database Connection(connect_str)이 후행 슬래시가 필요한 동일한 연결 문자열을 사용할 수 있지만 New SQL Query()는 후행 슬래시를 제거하고 ODBC의 접두사: 데이터베이스에 연결하는 경우.
//--- Method 3: New SQL Query platform script -----------------------------------
//remove the trailing slash on importpath
importnoslash = substr(connect_str, 1, length(connect_str)-1 );
nconnect = "ODBC:" || importnoslash
몇 가지 아이디어입니다.
Re: 쿼리 작성기 스크립트(쿼리 후 스크립트 포함)를 다른 스크립트에 통합다른 예 추가:
dir = Get Default Directory();
query = Open( dir || "query.jmpquery", Private );
query << Run(
On Run Complete(
queryResult << // some function
a = 1
)
);
Write( a ); // variable is unknown
Run() 내에서 변수를 생성하면 Run() 외부에서 액세스할 수 없습니다.