有简单的VB脚本的问题

时间:2017-12-05 21:55:36

标签: sql-server vb.net ssis etl script-task

我在运行以下VB脚本时遇到问题,无法在我的SSIS包中创建新目录。它应该创建以下新路径D:\ customers \ documents \ orders \ 20171205。

Public Sub Main()
    'set dir path
    Dts.Variables("var_DirPath").Value = 
        "D:\customers\documents\orders\" + Date.Today.Year.ToString + 
        Date.Today.Month.ToString + Date.Today.Day.ToString
    Dts.TaskResult = ScriptResults.Success
End Sub

脚本任务编辑器的ReadWriteVariables配置为User:var_DirPath。变量的值为“D:\ customers \ documents \ orders \”

文件任务已配置为

UseDirector/Exists = True
Operation = Create directory
IsSourcePathAvailable = True
Source variable = User:var_DirPath

它在调试期间在包中解析,但我不知道为什么这个简单的脚本不起作用。

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

我不确定为什么你不会看到任何日期子文件夹但该代码还有其他问题。例如,1月11日和11月1日将生成相同年份的相同文件夹名称。试试这个:

Dts.Variables("var_DirPath").Value = String.Format("D:\customers\documents\orders\{0:yyyyMMdd}", Date.Now)

这比连接更好,格式确保所有日期的唯一文件夹名称。

答案 1 :(得分:0)

一些建议

您必须确保正确键入变量名称,因为名称区分大小写。您也可以使用Date.Now.ToString("yyyyMMdd")而不是连接日期部分。

Public Sub Main()
    'set dir path
    Dts.Variables("var_DirPath").Value = 
    "D:\customers\documents\orders\" & Date.Now.ToString("yyyyMMdd")
    Dts.TaskResult = ScriptResults.Success
End Sub

还要确保将文件系统任务Delay Validation属性设置为True

更简单的解决方案 - 使用表达式

顺便说一句,您可以使用表达式实现此目的,只需转到变量列表,单击变量var_DirPath,按F4显示属性选项卡,将Evaluate as expression属性设置为{{1单击True属性并使用以下表达式:

Expression