Udostępnij za pośrednictwem


ForLoop.EvalExpression Property

Gets or sets the expression that is evaluated on each pass of the loop.

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

Syntax

'Declaration
Public Property EvalExpression As String
public string EvalExpression { get; set; }
public:
property String^ EvalExpression {
    String^ get ();
    void set (String^ value);
}
/** @property */
public String get_EvalExpression ()

/** @property */
public void set_EvalExpression (String value)
public function get EvalExpression () : String

public function set EvalExpression (value : String)

Property Value

A String that contains the expression used to test whether the loop should stop or continue looping.

Remarks

In each iteration of the loop, the ForLoop container evaluates an expression and repeats its workflow until the expression evaluates to false.

Example

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();
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Microsoft.SqlServer.Dts.Runtime
Imports Microsoft.SqlServer.Dts.Tasks.SendMailTask
Imports Microsoft.SqlServer.Dts.Tasks.BulkInsertTask

Namespace ForLoopAPI

   Class Program

      'Entry point which delegates to C-style main Private Function
      Public Overloads Shared Sub Main()
         Main(System.Environment.GetCommandLineArgs())
      End Sub
      
      Overloads Shared Sub Main(args() As String)
         Dim varName As String = "MyVariable"
         Dim INIT_COUNT As Integer = 2
         Dim MAX_COUNT As Integer = 5
         
         Dim pkg As New Package()
         Dim var As Variable = pkg.Variables.Add(varName, False, "", 0)
         Dim var2 As Variable = pkg.Variables.Add("Counter", False, "", 0)
         
         Dim forLoop As ForLoop = CType(pkg.Executables.Add("STOCK:ForLoop"), 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.
         Dim thLoopMail As TaskHost = CType(forLoop.Executables.Add("STOCK:SendMailTask"), TaskHost)
         Dim thLoopInsert As TaskHost = CType(forLoop.Executables.Add("STOCK:BulkInsertTask"), TaskHost)
         Dim loopExecs As Executables = forLoop.Executables
         Console.WriteLine("Number of Executables in ForLoop: {0}", loopExecs.Count)
         
         ' Like other containers, precedence constraints can be set on the
         ' contained tasks.
         Dim pc As PrecedenceConstraint = forLoop.PrecedenceConstraints.Add(CType(thLoopMail, Executable), thLoopInsert)
         Dim pcs As PrecedenceConstraints = 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.
         Dim result As DTSExecResult = pkg.Execute()
      End Sub 'Main
   End Class 'Program
End Namespace 'ForLoopAPI

Sample Output:

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

Number of Executables in ForLoop: 2

Number of precedence constraints: 1

Thread Safety

Any public static (Shared in Microsoft Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Platforms

Development Platforms

For a list of the supported platforms, see Hardware and Software Requirements for Installing SQL Server 2005.

Target Platforms

For a list of the supported platforms, see Hardware and Software Requirements for Installing SQL Server 2005.

See Also

Reference

ForLoop Class
ForLoop Members
Microsoft.SqlServer.Dts.Runtime Namespace