將查詢生成器腳本(帶有查詢後腳本)集成到另一個腳本中你好,
我一直在使用查詢生成器和圖形生成器來組合一些腳本,這些腳本不斷地從服務器提取數據、繪圖並保存結果(在 JMP 13 中)。 最近,我一直在嘗試將其中幾個腳本綁定到一個腳本中,該腳本使用 Include() 一次運行所有腳本,效果很好。 我現在面臨的問題是所有目錄都已硬編碼,我想使用類似: Get Default Directory() 的方法,以便可以將更廣泛的腳本集合移動到其他計算機上。
不幸的是,我遇到了以下問題:
- 當在“查詢後腳本”中使用 Get Default Directory() 時,無論此腳本保存在何處,它都會返回“/”。
- 將在查詢後腳本中創建的數據表/圖表保存到變量時,這些變量似乎不存在(或不可訪問)外部
查詢後腳本。
- 在查詢後腳本之外創建的任何變量都不能在其中使用。
// 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 );
有什麼想法嗎?
數據存取分享和交流結果回复:將查詢生成器腳本(帶有查詢後腳本)集成到另一個腳本中您應該考慮為您的應用程序創建一個插件。這將解決您的文件所在位置的問題。插件將別名與文件位置相關聯。如果您的插件“別名”是 com.company.dept.mygreatapp,您可以參考如下文件:
include("$ADDIN_HOME(com.company.dept.mygreatapp)\DoSomethingGreat.jsl");回复:將查詢生成器腳本(帶有查詢後腳本)集成到另一個腳本中您的帖子包含幾個需要解決的問題:
- 如果您使用的是 Windows,則 Get Default Directory() 不會獲取最後使用的目錄。 如果您的程序提示,使用“設置默認目錄”,則“獲取默認目錄”() 將返回該值。
- 我建議使用命名空間或全局關聯數組來維護引用/變量。如果您的程序的多個實例在任何時候都在運行,請將其設置為匿名名稱空間,以便它對於每個實例都是唯一的。對於關聯數組, ::varRef_aa = Associative Array(); ::varRef_aa << 設置默認值(-9999);然後在腳本中指定 ::varRef_aa[a] = 1;使用命名空間的一個好處是,意外的 Clear Globals() 不會刪除命名空間及其內容。
- 我不喜歡保存演示文稿,因為每個對像都保存在不同的頁面上,並且幾乎無法控制縮放。 我使用一個名為的免費外部程序P3ICLI 。 因此,通常,我會創建一個對於任務或報告而言唯一的輸出目錄,然後將所需的視圖保存到該目錄中的圖片中。 我提出他的方法,因為通過保存你想要的輸出,如幻燈片 1、2 等,你能使用“保存演示文稿”,方法是在 Directory() 中為該保存的目錄創建文件列表,並在 for 循環中使用“保存演示文稿”將它們附加到 PPTX。 此外,通過保存圖片,您可以保存多對象顯示,並且在使用“保存演示文稿”時,所有項目都位於同一頁面上。它提供了對 PPTX 報告的一些控制。
最後,是的,令人煩惱的是,打開數據庫(connect_str,...)和創建數據庫連接(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
只是一些想法。
回复:將查詢生成器腳本(帶有查詢後腳本)集成到另一個腳本中添加另一個示例:
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() 外部無法訪問