2017-11-10 156 views
1

SAS Enterprise Guide相對較新。我正在尋找一種方法來提示用戶在流程執行期間上傳文件。該文件將用於流程後續步驟中。SAS EG提示在流程流程中上傳文件

這可能嗎?有什麼替代方法可用?

+0

如果用戶提供一個文件的路徑,你可以通過代碼導入文件嗎?或者你是否需要他們使用導入數據任務? – Reeza

+0

我需要他們使用導入數據任務。靜態文件路徑不適合我的目的。我希望上傳行爲幾乎就像流程中的中斷/提示一樣。 – SQALEX101

回答

0

SAS似乎不支持對文件打開對話框的「本地」調用,但它確實允許您調用Windows API,它提供了您隨處可見的常見文件選擇器對話框。

您需要使用sascbtbl文件名,並調用modulec才能這樣做。我將這個答案作爲當前的存根,並將在下週嘗試並擴展它。

在此期間,這裏有一個如何使用上述獲得在windows當前進程ID(PID)的例子:

filename sascbtbl "%sysfunc(pathname(work))\sascbtbl.txt" lrecl=500; 

data _null_; 
    file sascbtbl; 
    infile datalines; 
    input; 
    put _infile_; 
datalines4; 
routine GetCurrentProcessId 
    minarg=0 
    maxarg=0 
    stackpop=called 
    callseq=byvalue 
    module=kernel32; 
;;;; 
run; 

%let current_sas_process_id = %sysfunc(modulen(*e,GetCurrentProcessId)); 
%put &current_sas_process_id; 

以上是基本的方法,你將需要採取但不是調用GetCurrentProcessId類,您可能需要調用FileOpenDialog類或類似的東西(因爲它需要參數,這更復雜)。

+0

有趣。我期待着你對此的進一步思考。我將在此期間嘗試使用此代碼進行測試。 – SQALEX101