Microsoft SQL Server
DTS

Цикл в DTS Package

Опубликовано: 30 сен 02
Рейтинг:

Автор: Дед Маздай
Прислал: Glory

Q.
Можно ли в DTS-пакете организовать циклическое выполнение последовательности операций: что-то похожее на
For Counter = Index1 To Index2
[Последовательность_операций]
Next Counter.
или
Do While [условие]
[Последовательность_операций]
Loop

Я пробовал такой вариант. Есть последовательность шагов
Step1(ActiveX)->On Success->Step2(ActiveX)-[Последовательность_операций_разного_типа]->Step_n

Если структура линейная, то все работает нормально: один проход по всей цепочке удается. Но мне нужно организовать цикл, для чего я сделал связь: Step_n->On Success->Step2. В Step1 задается начальное значение для счетчика Counter – это глобальная переменная. Тогда при запуске пакета выполняется только Step1 и все. Остальные шаги даже _не_пытаются_ выполняться.


A.
Иными словами, ты зациклил Step_n на Step_2 и удивляешься, что кроме Step_1 ничего не работает. Удивляться нечему, п.ч. тем самым ты для Step_2 обозначил два precedence constraints: Step_1 и Step_n. Последний не отрабатывает, т.к. до него управление еще не дошло, поэт. начало цикла тоже не отрабатывает. Т.е. ты зациклил не выполнение, а невыполнение цикла. На с.д. оставь всю цепочку линейной и однонаправленной, как вначале. Step_n должен выглядеть так:
DTSGlobalVariables("Counter").Value = DTSGlobalVariables("Counter").Value - 1
msgbox DTSGlobalVariables("Counter").value
if DTSGlobalVariables("Counter").Value > 0 then
Main = DTSTaskExecResult_Success
else
Main = DTSTaskExecResult_Failure
end if
Из Step_n протяни стрелочку "в случае успеха" на задачу типа Dynamic Properties, в к-й поменяй св-во ExecutionStatus шага Step_2 c 4 (DTSStepExecStat_Completed) на 1 (DTSStepExecStat_Waiting), что заставит его (а, сл., и всю растущую из него цепочку) выполниться еще раз. Собственно, все. Удачи.

Комментарии


  • 20 февраля 2013, 04:16 Валентина Петровна

    <a href=http://karona.net>Комнатные цветы и растения</a>

  • 20 февраля 2013, 04:16 Валентина Петровна

    <a href=http://karona.net>Комнатные цветы и растения</a>

  • 13 февраля 2013, 22:45 Валентина Петровна

    А вот для новичков инфа
    http://karona.net/help-stoty/

  • 13 февраля 2013, 22:44 Валентина Петровна

    Спасибо! очень помогло!
    Так же хочется поделиться хорошей новостью!
    Есть отличный сайт с полным описанием домашних растений и цветов, уход и всё что необходимо начинающим цветоводам.
    http://karona.net/

  • Спасибо. но можно было сделат и так.
    степ_н

    DTSGlobalVariables("Counter").Value = DTSGlobalVariables("Counter").Value - 1
    msgbox DTSGlobalVariables("Counter").value
    if DTSGlobalVariables("Counter").Value > 0 then

    Set stp = DTSGlobalVariables.Parent.Steps("DTSStep_DTSExecuteSQLTask_1")
    stp.ExecutionStatus = DTSStepExecStat_Waiting
    else
    end if

  • sds

  • Спасибо, разобрался



Необходимо войти на сайт, чтобы оставлять комментарии

Раздел FAQ: Microsoft SQL Server / DTS / Цикл в DTS Package