【问题标题】:SAS EG prompt to upload file during process flowSAS EG 在流程中提示上传文件
【发布时间】:2017-11-10 21:07:30
【问题描述】:

SAS Enterprise Guide 相对较新。我正在寻找一种在流程执行期间提示用户上传文件的方法。该文件将用于流程的后续步骤。

这可能吗?有哪些替代方案?

【问题讨论】:

  • 如果用户提供了文件的路径,可以通过代码导入文件吗?还是您需要他们使用导入数据任务?
  • 我需要他们使用导入数据任务。静态文件路径不适用于我的目的。我希望上传的行为几乎就像流程中的中断/提示一样。

标签: file-upload sas prompt enterprise-guide


【解决方案1】:

SAS 似乎不支持对文件打开对话框的“本机”调用,但它允许您调用 Windows API,该 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;

以上是您需要采取的基本方法,但您可能需要调用FileOpenDialog 类或类似的东西(因为它需要参数而更复杂),而不是调用GetCurrentProcessId 类。

【讨论】:

  • 有趣。我期待您对此的进一步想法。我会在此期间尝试这段代码进行测试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多