如果为0记录,请勿创建文件

时间:2017-05-18 15:28:04

标签: ssis

enter image description here

我的数据流中有以下内容 - 它本身就是一个forloop。 如果记录的数量为零,数据流中有没有办法让它生成文件?

我以前在数据流之前的控制流程中做了类似的事情,但我不能在这里做,因为数据流存在于forloop中以导入多个文件并将其提取到不同的文件取决于条件分割。

因此,如果有56笔交易且没有退款,我希望不会创建退款文件,但目前它正在创建一个空文件。

由于

2 个答案:

答案 0 :(得分:1)

您可以使用脚本组件在数据流任务级别而不是使用FF目标。

删除退款分支中的FF目标,而是添加转换脚本组件。 (添加名称空间:System.IO和System.Text) 在公共类ScriptMain中添加以下代码:UserComponent。

 StringBuilder FileContent = new StringBuilder();
 int count = 0;

 public override void PreExecute()
 {
     base.PreExecute();
 }

 public override void PostExecute()
 {
     base.PostExecute();
     if (count != 0)
     {
         File.WriteAllText("C:\\MyFile.txt", FileContent.ToString());
     }
 }

 public override void Input0_ProcessInputRow(Input0Buffer Row)
 {
     FileContent.Append(Row.COLUMN);
     count = count + 1;
 }

答案 1 :(得分:0)

没有理由你不能做过去做过的事情。在forloop中,您可以在数据流之前放置一个脚本任务,该任务分析退款文件是否包含任何记录并相应地执行逻辑。