Compartilhar via


Método MoveNext

Advances the enumerator to the next element of the collection.

Namespace:  Microsoft.SqlServer.Dts.Runtime.Enumerators.SMO
Assembly:  Microsoft.SqlServer.ForEachSMOEnumerator (em Microsoft.SqlServer.ForEachSMOEnumerator.dll)

Sintaxe

'Declaração
Public Function MoveNext As Boolean
'Uso
Dim instance As SMODataFileEnumerator
Dim returnValue As Boolean

returnValue = instance.MoveNext()
public bool MoveNext()
public:
virtual bool MoveNext() sealed
abstract MoveNext : unit -> bool 
override MoveNext : unit -> bool 
public final function MoveNext() : boolean

Valor de retorno

Tipo: System. . :: . .Boolean
true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection.

Implementa

IEnumerator. . :: . .MoveNext() () () ()

Exemplos

The following code example creates a ForEachLoop, creates a SMO enumerator and hosts it in a ForEachEnumeratorHost, where it is then added as the ForEachEnumerator in the ForEachLoop. Returning a ForEachSMOEnumerator, a SMODataFileEnumerator is created as a System.Collections.IEnumerator and iterated over using MoveNext and Current. After the index has passed the end of the collection, the Reset is used to reset the iterator.

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SqlServer.Dts.Runtime;
using Microsoft.SqlServer.Dts.Runtime.Enumerators.SMO;

namespace SmoDataFileEnumerator
{
    class Program
    {
        const string PACKAGEFILENAME = @"\SmoDataFileEnumeratorPackage.dtsx";
        static void Main(string[] args)
        {
            // Create the SSIS application
            Application application = new Application();

            // Create the new package
            Package package = new Package();
            package.PackageType = DTSPackageType.DTSDesigner;
            package.Name = "SMODataFileEnumerator Sample";
            package.Description = "This is a sample for SMODataFileEnumerator";
            // Use System.Environment.MachineName; in the following line of code.
            package.CreatorComputerName = @"MACHINENAME";
            // Use System.Environment.UserName; in the following line of code.
            package.CreatorName = @"USERNAME";

            // Adds the ADO.NET connection manager to the package
            Connections connections = package.Connections;
            ConnectionManager connectionManager = connections.Add("ADO.NET:SQL");
            Console.WriteLine("ConnectionManager creation name: {0}", connectionManager.CreationName);
            connectionManager.Name = "localhost.AdventureWorks2008R2";
            connectionManager.ConnectionString = "Data Source=localhost;"
                + "Initial Catalog=AdventureWorks2008R2;"
                + "Integrated Security=True;";

            // Create ForEach SMO Loop task
            Executables executables = package.Executables;
            ForEachLoop forEachLoop = executables.Add("STOCK:FOREACHLOOP") as ForEachLoop;
            forEachLoop.Name = "Foreach Loop Container";
            forEachLoop.Description = "Foreach Loop Container";

            Console.WriteLine("ForEachLoop creation name: {0}", forEachLoop.CreationName);
            ForEachEnumeratorInfo forEachEnumeratorInfo
                = application.ForEachEnumeratorInfos["Foreach SMO Enumerator"];
            ForEachEnumeratorHost forEachEnumeratorHost = forEachEnumeratorInfo.CreateNew();
            forEachLoop.ForEachEnumerator = forEachEnumeratorHost;

            // Setup the SMO enumerator
            ForEachSMOEnumerator forEachSMOEnumerator = forEachEnumeratorHost.InnerObject as ForEachSMOEnumerator;
            forEachSMOEnumerator.EnumURN = "RuntimeServer[@Connection='"
            + connectionManager.ID + @"']/Server[@Name='localhost']"
                + @"/Database[@Name='AdventureWorks2008R2']"
                + @"/SMOEnumObj[@Name='DataFiles']"
                + @"/SMOEnumType[@Name='Locations']";

            System.Collections.IEnumerator smoDataFileEnumerator = forEachSMOEnumerator.GetEnumerator(
            connections, null, null, null) as System.Collections.IEnumerator;
            Console.WriteLine("The collection contains the following values:");
            int i = 0;
            while ((smoDataFileEnumerator.MoveNext()) && (smoDataFileEnumerator.Current != null))
                Console.WriteLine("[{0}] {1}", i++, smoDataFileEnumerator.Current);

            smoDataFileEnumerator.Reset();
            // Validate the layout of the package
            DTSExecResult status = package.Validate(package.Connections, null, null, null);
            Console.WriteLine("Validation result: " + status);

            // Save the package
            String currentDirectory = Environment.CurrentDirectory;
            application.SaveToXml(currentDirectory + PACKAGEFILENAME, package, null);
            Console.WriteLine("Package saved to " + currentDirectory + PACKAGEFILENAME);
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Microsoft.SqlServer.Dts.Runtime
Imports Microsoft.SqlServer.Dts.Runtime.Enumerators.SMO
 
Namespace SmoDataFileEnumerator
    Class Program
        const String PACKAGEFILENAME = "\SmoDataFileEnumeratorPackage.dtsx"
        Shared  Sub Main(ByVal args() As String)
            ' Create the SSIS application
            Dim application As Application =  New Application() 
 
            ' Create the new package
            Dim package As Package =  New Package() 
            package.PackageType = DTSPackageType.DTSDesigner
            package.Name = "SMODataFileEnumerator Sample"
            package.Description = "This is a sample for SMODataFileEnumerator"
            ' Use System.Environment.MachineName; in the following line of code.
            package.CreatorComputerName = "MACHINENAME"
            ' Use System.Environment.UserName; in the following line of code.
            package.CreatorName = "USERNAME"
 
            ' Adds the ADO.NET connection manager to the package
            Dim connections As Connections =  package.Connections 
            Dim connectionManager As ConnectionManager =  connections.Add("ADO.NET:SQL") 
            Console.WriteLine("ConnectionManager creation name: {0}", connectionManager.CreationName)
            connectionManager.Name = "localhost.AdventureWorks2008R2"
            connectionManager.ConnectionString = "Data Source=localhost;"
                + "Initial Catalog=AdventureWorks2008R2;"
                Dim "Integrated Security=True;" As +
 
            ' Create ForEach SMO Loop task
            Dim executables As Executables =  package.Executables 
            Dim forEachLoop As ForEachLoop =  executables.Add("STOCK:FOREACHLOOP") as ForEachLoop 
            forEachLoop.Name = "Foreach Loop Container"
            forEachLoop.Description = "Foreach Loop Container"
 
            Console.WriteLine("ForEachLoop creation name: {0}", forEachLoop.CreationName)
            ForEachEnumeratorInfo forEachEnumeratorInfo
                Dim  As =
            Dim forEachEnumeratorHost As ForEachEnumeratorHost =  forEachEnumeratorInfo.CreateNew() 
            forEachLoop.ForEachEnumerator = forEachEnumeratorHost
 
            ' Setup the SMO enumerator
            Dim forEachSMOEnumerator As ForEachSMOEnumerator =  forEachEnumeratorHost.InnerObject as ForEachSMOEnumerator 
            forEachSMOEnumerator.EnumURN = "RuntimeServer[@Connection='"
            + connectionManager.ID + "']/Server[@Name='localhost']"
                + "/Database[@Name='AdventureWorks2008R2']"
                + "/SMOEnumObj[@Name='DataFiles']"
                Dim "/SMOEnumType[@Name='Locations']" As +
 
            System.Collections.IEnumerator smoDataFileEnumerator = forEachSMOEnumerator.GetEnumerator(
            connections, Nothing, Nothing, Nothing) as System.Collections.IEnumerator
            Console.WriteLine("The collection contains the following values:")
            Dim i As Integer =  0 
            While (smoDataFileEnumerator.MoveNext()) &&(smoDataFileEnumerator.Current <> Nothing)
                Console.WriteLine("[{0}] {1}",i = Console.WriteLine("[{0}] {1}",i + 1
            End While

            smoDataFileEnumerator.Reset()
            ' Validate the layout of the package
            Dim status As DTSExecResult =  package.Validate(package.Connections,Nothing,Nothing,Nothing) 
            Console.WriteLine("Validation result: " + status)
 
            ' Save the package
            Dim currentDirectory As String =  Environment.CurrentDirectory 
            application.SaveToXml(currentDirectory + PACKAGEFILENAME, package, Nothing)
            Console.WriteLine("Package saved to " + currentDirectory + PACKAGEFILENAME)
        End Sub
    End Class
End Namespace