我被SSIS困住了。当我尝试使用foreach
容器循环遍历一个记录集时,我从Excel文件中提取。
以下是我使用的两个变量:
我要做的第一件事就是从Excel文件中提取数据,然后将其作为记录集存储到变量“CriteriaResult”中。
然后在foreach
循环中,我使用ADO枚举器来访问此记录集:
此记录集中的每条记录都将转换为字符串变量“CriteriaID”:
然后我将此记录插入SQL Server中的表:
参数设置与SQL Server表中列的数据类型相同:
但是,我在foreach
循环步骤中收到错误:
错误:获取Excel数据时的0xC001F009:分配给变量“User :: CriteriaID”的值的类型与当前变量类型不同。变量在执行期间可能不会更改类型。变量类型是严格的,除了Object类型的变量。
Excel文件中的原始数据如下:
从数字1和2开始,然后更改为3A,3B ....我猜这就是为什么它在foreach
循环步骤声明数据类型更改的原因。在循环之前,我可以添加任何脚本任务来格式化记录集中的数据吗?
另一个潜在的问题可能来自合并细胞。但是,之前我尝试过一个单细胞,效果很好。
如何解决此问题?
答案 0 :(得分:1)
尝试使用表达式而不是传递参数:
使用以下表达式:
"INSERT INTO dbo.SSIS (CriteriaID) VALUES(" + @[User::CriteriaID] + ")"