我在SQL Server 2008下的SSIS(BIDS)中工作。在我的控制流程中,我正在测试文件是否存在(通过脚本任务),然后才转移到数据流任务。我在脚本任务中遇到了If-Then-Else语句的问题。 Visual Studio正在发出警告,声明它不能使用本地变量'如果'在宣布之前#34;我不知道为什么会这样。有什么建议?以下是我的代码:
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
using System.IO;
namespace ST_2f8cf79f6fe0443b9c09c453433a0258.csproj
{
[System.AddIn.AddIn("ScriptMain", Version = "1.0", Publisher = "", Description = "")]
public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
{
#region VSTA generated code
enum ScriptResults
{
Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
};
#endregion
public void Main()
{
If (File.Exists(CStr(Dts.Variables("PVR_file_path").Value))) Then
Dts.TaskResult = Dts.Results.Success
Else
Dts.TaskResult = Dts.Results.Failure
End If
}
}
}
答案 0 :(得分:1)
您的VB.Net
似乎已使用if
,但其余代码位于C#
。将Main
方法更改为类似的方法应该可以解决问题:
public void Main()
{
if (File.Exists(Dts.Variables["PVR_file_path"].Value.ToString()))
{
Dts.TaskResult = (int)ScriptResults.Success;
}
else
{
Dts.TaskResult = (int)ScriptResults.Failure;
}
}
稍微解释一下:
for
循环更改为C#语法。Dts.Variables
是一个集合,因此paranthesis成为方括号。要将其转换为字符串,您可以拨打ToString()
,而不是使用CStr
中不存在的C#
。enum
。