2017-11-10 279 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