SSIS получение исключения при доступе к переменной Int

Я пытаюсь создать сценарий, который на лету будет генерировать нужные мне папки.

Сценарий принимает переменные FolderName и OrderID для генерации имен создаваемых папок. Я добавил их в переменные только для чтения для скрипта.

введите здесь описание изображения

С FolderName все работает нормально, только когда я пытаюсь получить доступ к переменной OrderID, все взрывается. Я получаю неприятную ошибку исключения ниже.

    public void Main()
    {
        //  Output File Expression
        //     "" + @[User::FolderName]+"\\Folder_"+ (DT_WSTR,20) @[User::T1_ID]  +"\\SalesOrderHeader_T1_"+ (DT_WSTR,20) @[User::T1_ID]+ ".txt"

        String folderName = (string)Dts.Variables["User::FolderName"].Value;
        String OrderIDStr = (string)Dts.Variables["User::OrderID"].Value;
        System.Windows.Forms.MessageBox.Show(OrderIDStr, "OrderID Var");

        folderName = string.Concat(folderName, "\\Folder_");
        System.Windows.Forms.MessageBox.Show(folderName, "Folder Name");

        try
        {
            // Determine whether the directory exists.
            if (Directory.Exists(folderName))
            {
                Console.WriteLine("That path exists already.");
                System.Windows.Forms.MessageBox.Show("That path exists already.", "WARNING");
                return;
            }

            // Try to create the directory.
                DirectoryInfo di = Directory.CreateDirectory(folderName);
                Console.WriteLine("The directory was created successfully at {0}.", Directory.GetCreationTime(folderName));
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
        finally { }
    }

Я устанавливаю значение 1 на уровне пакета и преобразую его в String, поэтому я не уверен, в чем проблема.

введите здесь описание изображения

В поле текст обрезается, вот все:

в System.RuntimeMethodHandle.InvokeMethod (цель объекта, аргументы Object [], сигнатура сигнатуры, логический конструктор) в system.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal (параметры объекта, Object [], аргументы Object []) в System.Reflection.RunfoMethod. Invoke (Object obj, BindingFlags invokeAttr, Binder binder, Object [] parameters, CultureInfo culture) в System.RuntimeType.InvokeMember (String name, BindingFlags bindingFlags, Binder binder, Object target, Object [] providedArgs, ParameterModifier [] модификаторы, культура CultureInfo , String [] namedParams) в Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript ()


person Dizzy49    schedule 06.02.2019    source источник
comment
Это целое число в базе данных и строка в вашем коде: String OrderIDStr = (string) Dts.Variables [User :: OrderID] .Value;   -  person jdweng    schedule 06.02.2019


Ответы (1)


Попробуйте использовать метод .ToString() вместо преобразования (string)

String OrderIDStr = Dts.Variables["User::OrderID"].Value.ToString();

На основе этой статьи, явное приведение с int на string не допускается.

Ссылки

person Hadi    schedule 06.02.2019
comment
Тьфу, блин! Я пробовал: String OrderIDStr = Dts.Variables [User :: OrderID] .ToString (); - person Dizzy49; 07.02.2019