2013-03-25 1 views
4

Я создаю пакет SSIS программно с использованием объектной модели SSIS.Как программно установить переменную ADO в перечислитель цикла ForEach в SSIS?

Я хочу иметь цикл ForEach, используя переменную объекта ADO, которую я создал как перечислитель. Как назначить переменную перечислителю и использовать его значения внутри цикла?

ответ

4

Предположения:

  • У вас есть ADO изменяемый объект пользователя :: ADOObject, содержащий две колонки Key и Value.

Код:

using Microsoft.SqlServer.Dts.Runtime.Enumerators; 
using Microsoft.SqlServer.Dts.Runtime; 
using Microsoft.SqlServer.Dts.Runtime.Enumerators.ADO; 

ForEachLoop f = new ForEachLoop(); 
ForEachADOEnumerator ado_enum = (ForEachADOEnumerator) f.ForEachEnumerator.InnerObject; 
ado_enum.Type = ADOEnumerationType.EnumerateRowsInFirstTable; 
ado_enum.DataObjectVariable = "User::ADOObject"; 

f.VariableMappings.Add(); 
f.VariableMappings[0].VariableName = "User::Key"; 
f.VariableMappings[0].ValueIndex = "Key"; 

f.VariableMappings.Add(); 
f.VariableMappings[1].VariableName = "User::Value"; 
f.VariableMappings[1].ValueIndex = "Value"; 

Если вы используете EzAPI, сначала вы должны изменить источник EzAPI как класса EzForEachLoop не выставляет VariableMappings из коробки. Добавьте это свойство к классу EzForEachLoop в EzExecutables.cs:

public ForEachVariableMappings VariableMappings 
{ 
    get { return (m_exec as ForEachLoop).VariableMappings; } 

} 

, а затем в коде инициализации EzForEachLoop как так (при условии, это называется внутри класса пользовательского пакета, то «этот» аргумент в конструкторе относится к этому пакету):

EzForEachLoop ezf = new EzForEachLoop(this); 
ezf.Initialize(ForEachEnumeratorType.ForEachADOEnumerator); 

а теперь EZF «ы перечислитель и переменные отображения могут быть установлены таким же образом, как цикл просмотра ф выше.

 Смежные вопросы

  • Нет связанных вопросов^_^