我正在运行使用多个Foreach循环容器,并希望同时运行它们。但是,我收到错误消息-
COM错误对象信息可用。资源: “ ADODB.Recordset”错误代码:0x800A0BCD说明:“ BOF或 EOF为True,或者当前记录已被删除。已要求 操作需要当前记录。”
很明显,一旦一个Foreach循环过程完成,结果集就会被删除。
要解决这个问题,我假设您可以像这样将相同的数据传递给不同的变量-
然后在每个循环中仅更改DBList,一个Foreach循环为DBList,另一个为DBList2-
但是,我收到错误消息-
返回了无效数量的结果绑定 ResultSetType:“ ResultSetType_Rowset”。
是否不可能同时运行多个Foreach循环?
答案 0 :(得分:3)
您可以同时运行foreach循环,但是必须将结果集放入多个对象类型变量中,并且还必须具有两组变量,分别用于每个foreach循环的变量映射。
示例:
您的数据流将包括一个源,多播和2个不同的RecordSet目标:
此处的示例源仅返回数字列表的1列。我们将其多次转换为2个单独的RecordSet目标,然后将其分配给自己的对象变量类型。在此示例中,我有2个变量,User :: RecordSet1和User:RecordSet2。
然后将每个foreach循环配置为这些变量中的每个变量:
然后,每个foreach循环都有单独的变量:
从那里开始,您需要确保在每个foreach循环中使用的任何代码中都使用了适当的变量集。
答案 1 :(得分:2)
创建Execute SQL Task
而不是使用Data Flow
,然后使用SQL查询作为源(可能是OLE DB源)。然后将其通过管道传递到Multicast
,并输出到两个不同的Recordset Destinations
。在Component Properties
选项卡中,将VariableName设置为您的对象变量之一,然后单击Input Columns
以选择要包括的列。对其他Recordset Destination
执行相同的操作,这次选择第二个对象变量,然后再次选择要包括的列。然后回到您的Control Flow
,并将刚刚创建的Data Flow
链接到两个Foreach Loop Container
。