0

我想使用 SSIS 包动态生成 excel 文件。我试过如下:

data flow task我采取了 以下措施Oledb Source,因为我的变量具有如下所示的 sql 查询oledb source editorconnection managerdata access mode = sql command from variableselect cusip,price,company from mytable where date in between @[var1] and @[var2]

但我没有使用它var1var 2它给了我解析错误。

在 ssis 项目中创建了 3 个变量

var1 datatype = datetime value=5/01/2011 8:22:10 AM

var2 datatype = datetime value=5/21/2011 8:22:10 AM

var3 datatype = datetime value=MY ABOVE SELECT QUERY 使用上面的选择查询,我想每天生成新的 excel 文件,文件名如下MYFile05222013 (with yesterdays date)

var 3 taken as string and added value into Expression 但得到解析错误:

Error code: 0x80040E14.
An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 10.0"  Hresult: 0x80040E14  Description: "Statement(s) could not be prepared.".
An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 10.0"  Hresult: 0x80040E14  Description: "Must declare the scalar variable "@".".

The data types "DT_WSTR" and "DT_DATE" are incompatible for binary operator "+". The operand types could not be implicitly cast into compatible types for the operation. To perform this operation, one or both operands need to be explicitly cast with a cast operator.

请指教。

在此处输入图像描述

4

1 回答 1

1

尝试将 var3 设为字符串数据类型(不是日期时间)。给它一个这样的表达式:

"select cusip,price,company from mytable where date in between " + @[User::var1] + " and " + @[User::var2]

也将 var1 和 var2 变量设为字符串数据类型。使用解析为有效日期时间值的默认值设置 var1 和 var2。

要查看表达式的评估结果,请单击表达式生成器中的评估表达式。

对于输出文件,您需要一个 Excel 目标。目标连接管理器将有一个文件名表达式。该表达式是您将在其中构建文件名的地方,例如“MYFile05222013”​​。

于 2013-05-22T13:25:37.393 回答