问题描述
我有一个简单的 SSIS 包,我想在其中包含一个部分,以确定文件是否存在于文件夹中,并通过电子邮件发送失败或通过电子邮件。我尝试在主要 for 循环部分之后使用脚本任务,并根据成功或失败使用优先约束通过电子邮件发送文件是否存在。每次我运行它时,脚本都会从某个地方获取一个成功标志(文件存在),当文件不存在时。
我在脚本代码中放置了一个消息框输出,以显示文件是否存在变量设置为 False 或 True,结果显示为 False,以及在邮件发送中显示变量值为 false,但正在发送成功的电子邮件。
我在我的脚本任务中得到了以下变量,FileExist 是一个布尔变量,在包级别设置为默认 false。在我的脚本代码中,我正在检查 xlFileName 是否存在,然后设置一个标志以打印出 Y 或 N
脚本中的代码如下:
Public Sub Main()
Dim fileExists As String
fileExists = CType(File.Exists(Dts.Variables("User::xlFileName").Value.ToString()),String)
If fileExists = "False" Then
MessageBox.Show("N")
Else
MessageBox.Show("Y")
End If
End Sub
是否需要根据结果将代码中的 ScriptResult 设置为成功/失败?
Dts.TaskResult = ScriptResults.Success
我之前尝试过,但脚本任务失败了。
在优先约束(设置为评估操作:表达式)中,我也有以下内容,但删除了它们,因为它们没有任何区别,但测试正常。
@[User::FileExists]="False" - For No File
@[User::FileExists]="True" - For File Present
我不是 ssis 的普通用户,也没有使用过脚本任务,所以请善待!
谢谢
安德鲁
编辑:下面的先例约束设置图像。我现在已经将这些设置为根据文件是否存在来检查变量的真/假:
更改变量以填充 True 作为布尔值而不是字符串值,并将任务结果设置为成功/失败。
Public Sub Main()
Dim fileExists As Boolean
fileExists = CType(File.Exists(Dts.Variables("User::xlFileName").Value.ToString()),Boolean)
If fileExists = False Then
Dts.TaskResult = ScriptResults.Failure
Dts.Variables("User::FileExists").Value = False
Else
Dts.TaskResult = ScriptResults.Success
Dts.Variables("User::FileExists").Value = True
End If
End Sub
当我运行脚本并且文件不可用时,脚本任务失败但发送邮件就好像成功一样:
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)