Condividi tramite


VariableEnumerator.Current Proprietà

Definizione

Ottiene l'oggetto Variable corrente dalla raccolta.

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

Valore della proprietà

Oggetto Variable corrente.

Esempio

Nell'esempio di codice seguente viene aggiunta una variabile al pacchetto. Nell'esempio di codice vengono usati vari metodi per individuare la variabile e stampare il nome, il valore e lo spazio dei nomi.

using System;  
using System.Collections.Generic;  
using System.Text;  
using Microsoft.SqlServer.Dts.Runtime;  
namespace Adding_Variables  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            Application app = new Application();  
            // Load a sample package that contains a variable that sets the File Name.  
            Package pkg = app.LoadPackage(@"C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services\Package Samples\CalculatedColumns Sample\CalculatedColumns\CalculatedColumns.dtsx", null);  
            Variables pkgVars = pkg.Variables;  
            Variable myVar = pkg.Variables.Add("myCustomVar", false, "User", "3");  

            // See if the variable is in the collection now.  
            Boolean hasMyVar = pkg.Variables.Contains("myCustomVar");  
            Console.WriteLine("The variable was found? {0}", hasMyVar);  

            // Loop over the collection using foreach keyword.  
            foreach (Variable pkgVar in pkgVars)  
            {  
                // Only print variables from the User namespace.  
                if (pkgVar.Namespace == "User")  
                {  
                Console.WriteLine("Variable: {0}, {1}", pkgVar.Name, pkgVar.Value.ToString());  
                 }  
            }  
            Console.WriteLine("---------------------------");  
            // Loop over the collection using the Enumerator.   
            VariableEnumerator myEnum = pkg.Variables.GetEnumerator();  
            int i = 0;  
            while ((myEnum.MoveNext()) && (myEnum.Current != null))  
                // Again only show User namespace variables.  
                if (myEnum.Current.Namespace == "User")  
                {                  
                    Console.WriteLine("[{0}] {1}, {2}", i++, myEnum.Current.Name, myEnum.Current.Namespace);  
                }  

            myEnum.Reset();  
            Console.WriteLine("---------------------------");  

            //Using the Item method syntax of [x], obtain the  
            // first entry in the collection.  
            myVar = pkgVars[0];  
            Console.WriteLine("The name and namespace of the first variable is: {0}, {1}", myVar.Name, myVar.Namespace);  
            String nameOfFirstItem = pkgVars[0].Name;  
            Console.WriteLine("The name of the first variable is: {0}", nameOfFirstItem);  
            //}  
        }  
    }  
}  
Imports System  
Imports System.Collections.Generic  
Imports System.Text  
Imports Microsoft.SqlServer.Dts.Runtime  

Namespace Adding_Variables  
    Class Program  
        Shared  Sub Main(ByVal args() As String)  
            Dim app As Application =  New Application()   
            ' Load a sample package that contains a variable that sets the File Name.  
            Dim pkg As Package =  app.LoadPackage("C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services\Package Samples\CalculatedColumns Sample\CalculatedColumns\CalculatedColumns.dtsx",Nothing)   
            Dim pkgVars As Variables =  pkg.Variables   
            Dim myVar As Variable =  pkg.Variables.Add("myCustomVar",False,"User","3")   

            ' See if the variable is in the collection now.  
            Dim hasMyVar As Boolean =  pkg.Variables.Contains("myCustomVar")   
            Console.WriteLine("The variable was found? {0}", hasMyVar)  

            ' Loop over the collection using foreach keyword.  
            Dim pkgVar As Variable  
            For Each pkgVar In pkgVars  
                ' Only print variables from the User namespace.  
                If pkgVar.Namespace = "User" Then  
                Console.WriteLine("Variable: {0}, {1}", pkgVar.Name, pkgVar.Value.ToString())  
                End If  
            Next  
            Console.WriteLine("---------------------------")  
            ' Loop over the collection using the Enumerator.   
            Dim myEnum As VariableEnumerator =  pkg.Variables.GetEnumerator()   
            Dim i As Integer =  0   
            While (myEnum.MoveNext()) &&(myEnum.Current <> Nothing)  
                    Console.WriteLine("[{0}] {1}, {2}",i = Console.WriteLine("[{0}] {1}, {2}",i + 1  
            End While  

            myEnum.Reset()  
            Console.WriteLine("---------------------------")  

            'Using the Item method syntax of [x], obtain the  
            ' first entry in the collection.  
            myVar = pkgVars(0)  
            Console.WriteLine("The name and namespace of the first variable is: {0}, {1}", myVar.Name, myVar.Namespace)  
            Dim nameOfFirstItem As String =  pkgVars(0).Name   
            Console.WriteLine("The name of the first variable is: {0}", nameOfFirstItem)  
            '}  
        End Sub  
    End Class  
End Namespace  

Esempio di output

La variabile è stata trovata? Vero

Variabile: myCustomVar, 3

---------------------------

[0] myCustomVar, User

---------------------------

Il nome e lo spazio dei nomi della prima variabile sono CancelEvent, System

Il nome della prima variabile è CancelEvent

Commenti

Dopo la creazione di un enumeratore o dopo una chiamata al Reset metodo , è necessario chiamare il MoveNext metodo per far avanzare l'enumeratore al primo elemento della raccolta prima che l'enumeratore possa leggere il valore della Current proprietà; in caso contrario, Current non è definito e viene generata un'eccezione.

Current genera anche un'eccezione se l'ultima chiamata a MoveNext restituisce false, che indica la fine della raccolta.

Current non sposta la posizione dell'enumeratore e le chiamate consecutive per restituire lo stesso oggetto fino a Current quando MoveNext non viene chiamato o Reset .

Un enumeratore rimane valido finché la raccolta rimane invariata. Se vengono apportate modifiche alla raccolta, ad esempio l'aggiunta, la modifica o l'eliminazione di elementi, l'enumeratore viene invalidato e diventa irrecuperabile; pertanto, la chiamata successiva a MoveNext o Reset genera un'eccezione InvalidOperationException. Tuttavia, se la raccolta viene modificata tra le chiamate a MoveNext e Current, Current restituisce l'elemento su cui è impostato, anche se l'enumeratore è stato invalidato.

Si applica a