다음을 통해 공유


ForLoop.Executables 속성

정의

ForLoop 반복 동안 처리되는 실행 개체의 컬렉션을 반환합니다.

public:
 property Microsoft::SqlServer::Dts::Runtime::Executables ^ Executables { Microsoft::SqlServer::Dts::Runtime::Executables ^ get(); };
public Microsoft.SqlServer.Dts.Runtime.Executables Executables { get; }
member this.Executables : Microsoft.SqlServer.Dts.Runtime.Executables
Public ReadOnly Property Executables As Executables

속성 값

Executables 컬렉션입니다.

구현

예제

다음 코드 예제에서는 ForLoop 3개의 식 속성을 만들고 설정합니다. ForLoop 루프의 컬렉션에 Executables 있는 두 개의 작업도 포함됩니다.

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  

샘플 출력:

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

ForLoop의 실행 파일 수: 2

선행 제약 조건 수: 1

설명

컨테이너를 포함한 ForLoop모든 컨테이너에는 컨테이너를 Executables 실행하는 동안 런타임 엔진에서 처리한 실행 개체의 컬렉션이 포함된 속성이 있습니다. 컬렉션에서 개체의 실행 순서는 컨테이너에 의해 상속되고 구현되는 개체에 의해 PrecedenceConstraints 결정됩니다.

적용 대상