我有一个脚本组件,它接受来自 SQL Azure 数据库表的记录。然后该脚本调用一个 Web 服务,该服务返回失败和成功记录的数量。
对于所有记录,我想添加具有“成功”或“失败”的状态字段,这会从脚本组件获取输出。
然后我将这些输出记录到一个文本文件中。
问题:我无法为每个输入记录添加状态,因为 Web 服务调用仅在执行后发生。
我试过这个,但仍然不起作用:
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
listOfData.Add(new ClockData
{
TimeClockID=Row.TimeClockID,
PersonID=Row.EmployeeCode,
LocationCode=Row.ClockInServiceContextID,
ClockInDateTime=Row.ClockInDateTime,
ClockOutDateTime=Row.ClockOutDateTime
});
}
public override void CreateNewOutputRows()
{
MessageBox.Show("Test CreateNewOutputRows");
MessageBox.Show(listOfData.Count.ToString());
foreach (var item in listOfData)
{
Output0Buffer.AddRow();
Output0Buffer.EmployeeCode = item.PersonID;
MessageBox.Show(item.PersonID);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 6
转换中的所有内容都在 Input0_ProcessInputRow 中完成 解决方案本质上是
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
listOfData.Add(new ClockData
{
TimeClockID=Row.TimeClockID,
PersonID=Row.EmployeeCode,
LocationCode=Row.ClockInServiceContextID,
ClockInDateTime=Row.ClockInDateTime,
ClockOutDateTime=Row.ClockOutDateTime
});
Output0Buffer.AddRow();
Output0Buffer.EmployeeCode = item.PersonID;
MessageBox.Show(item.PersonID);
}
Run Code Online (Sandbox Code Playgroud)
您可以在 PostExecute 中执行输出步骤,CreateNewOutputRows 不在 Transformation 中运行,只能在 Destination 脚本中运行。
我对SSIS不是很精通,但我认为你可以尝试以下想法:
然后,您的输出将出现空列,并且您需要为每个输入行填充一些数据:
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
Row.Status = IIf(String.IsNullOrEmpty(rowValues.GetValue(1).ToString()), 0, 1)
Run Code Online (Sandbox Code Playgroud)
这将帮助您将状态列添加到输出表中。希望这是您想要的。
| 归档时间: |
|
| 查看次数: |
36415 次 |
| 最近记录: |