Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
AssignExpression Property

ForLoop.AssignExpression Property

Gets or sets an expression to increment or decrement the loop counter.

Namespace:  Microsoft.SqlServer.Dts.Runtime
Assembly:  Microsoft.SqlServer.ManagedDTS (in Microsoft.SqlServer.ManagedDTS.dll)

public string AssignExpression { get; set; }

Property Value

Type: System.String
A String that contains the expression that increments or decrements the loop counter.

The following code example creates a ForLoop and sets the three expression properties. The ForLoop also contains two tasks with a precedence constraint.

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SqlServer.Dts.Runtime;
using Microsoft.SqlServer.Dts.Tasks.SendMailTask;
using Microsoft.SqlServer.Dts.Tasks.BulkInsertTask;

namespace ForLoopAPI
{
    class Program
    {
        static void Main(string[] args)
        {
            String varName = "MyVariable";
            int INIT_COUNT = 2;
            int MAX_COUNT = 5;

            Package pkg = new Package();
            Variable var = pkg.Variables.Add(varName, false, "", 0);
            Variable var2 = pkg.Variables.Add("Counter", false, "", 0);

            ForLoop forLoop = (ForLoop)pkg.Executables.Add("STOCK:ForLoop");
            forLoop.InitExpression = "@"+varName+" = "+INIT_COUNT;
            forLoop.EvalExpression = "@"+varName+" < "+MAX_COUNT;
            forLoop.AssignExpression = "@" + varName + " = @" + varName + " + " + INIT_COUNT;

            // Show a different syntax for setting these values.
            //forLoop.InitExpression = "@Counter = 1";
            //forLoop.AssignExpression = "@Counter = @Counter + 1";
            //forLoop.EvalExpression = "@Counter <= 10";

            // The ForLoop contains a Properties collection. 
           // Show how to set some properties using that collection.
            forLoop.Properties["Name"].SetValue(forLoop, "ForLoop Container");
            forLoop.Properties["Description"].SetValue(forLoop, "ForLoop Container");


            // Review the PackagePath of the ForLoop container.
            Console.WriteLine("PackagePath: {0}", forLoop.GetPackagePath());

            // Because the ForLoop is a container, it can contain tasks
            // that run at certain conditions.
            TaskHost thLoopMail = (TaskHost)forLoop.Executables.Add("STOCK:SendMailTask");
            TaskHost thLoopInsert = (TaskHost)forLoop.Executables.Add("STOCK:BulkInsertTask");
            Executables loopExecs = forLoop.Executables;
            Console.WriteLine("Number of Executables in ForLoop: {0}", loopExecs.Count);

            // Like other containers, precedence constraints can be set on the
            // contained tasks.
            PrecedenceConstraint pc = forLoop.PrecedenceConstraints.Add((Executable)thLoopMail, thLoopInsert);
            PrecedenceConstraints pcs = forLoop.PrecedenceConstraints;
            Console.WriteLine("Number of precedence constraints: {0}", pcs.Count);


            // Run the package. Because required properties on the tasks are not
            //  set, current sample code will fail.
            DTSExecResult result = pkg.Execute();
        }
    }
}

Sample Output:

PackagePath: \Package\{8A18B94E-1176-429E-BB3D-6F3F1E0C9070}

Number of Executables in ForLoop: 2

Number of precedence constraints: 1

Community Additions

ADD
Show:
© 2015 Microsoft