共用方式為


ForLoop.EvalExpression Property

Definition

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

public:
 property System::String ^ EvalExpression { System::String ^ get(); void set(System::String ^ value); };
[Microsoft.SqlServer.Dts.Runtime.Localization.LocalizablePropertyDescription(typeof(Microsoft.SqlServer.Dts.Runtime.Localized), "EvalExpressionDesc")]
public string EvalExpression { get; set; }
[<Microsoft.SqlServer.Dts.Runtime.Localization.LocalizablePropertyDescription(typeof(Microsoft.SqlServer.Dts.Runtime.Localized), "EvalExpressionDesc")>]
member this.EvalExpression : string with get, set
Public Property EvalExpression As String

Property Value

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

Attributes

Examples

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

Remarks

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

Applies to