SSIS - 无法使用本地变量'如果'在宣布之前

时间:2014-12-16 17:18:29

标签: c# ssis

我在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
        }

    }
}

1 个答案:

答案 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
相关问题