다음을 통해 공유


ForLoop.PrecedenceConstraints 속성

정의

PrecedenceConstraints 컬렉션을 반환합니다. 이 필드는 읽기 전용입니다.

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

속성 값

PrecedenceConstraints 컬렉션입니다.

구현

예제

다음 코드 예제에서는 3개의 식 속성을 만들고 ForLoop 설정합니다. ForLoop 또한 루프 PrecedenceConstraints 의 컬렉션에 추가되는 선행 제약 조건이 있는 두 개의 작업이 포함됩니다.

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

설명

선행 제약 조건은 패키지의 실행 파일을 정렬된 워크플로에 연결하고 실행 파일의 실행 여부를 결정하는 조건을 지정합니다.

적용 대상