Udostępnij za pośrednictwem


Właściwość ForLoop.EvalExpression

Pobiera lub ustawia wyrażenie, które jest obliczane dla każdego przebiegu pętli.

Przestrzeń nazw:  Microsoft.SqlServer.Dts.Runtime
Zestaw:  Microsoft.SqlServer.ManagedDTS (w Microsoft.SqlServer.ManagedDTS.dll)

Składnia

'Deklaracja
Public Property EvalExpression As String
    Get
    Set
'Użycie
Dim instance As ForLoop
Dim value As String

value = instance.EvalExpression

instance.EvalExpression = value
public string EvalExpression { get; set; }
public:
property String^ EvalExpression {
    String^ get ();
    void set (String^ value);
}
member EvalExpression : string with get, set
function get EvalExpression () : String
function set EvalExpression (value : String)

Wartość właściwości

Typ: System.String
A ciąg zawiera wyrażenie używane do testowania, czy pętli należy zatrzymać lub kontynuować pętli.

Uwagi

W każdej iteracji pętli ForLoop kontener oblicza wyrażenie i powtarza przepływu pracy do momentu wyrażenie ma false.

Przykłady

Poniższy kod ilustruje tworzenie ForLoop i ustawia właściwości trzy wyrażenie.ForLoop Zawiera także dwa zadania z ograniczenie pierwszeństwa.

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

Przykładowe dane wyjściowe:

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

Liczba plików wykonywalnych w ForLoop: 2

Liczba więzów kolejności: 1