Временная переменная Visual Basic для пакетов DTS - PullRequest
0 голосов
/ 20 марта 2019

Я конвертирую некоторые пакеты DTS из Visual Basic в C #, и мне интересно, что произойдет с @OldDate для следующего. Я не парень из VB.NET, и у меня нет времени, чтобы поиграть с этим ... и это должно быть правильно, поэтому я обращаюсь к ТАК !!

datActionDate = Now()
intNumberOfDays = 365
businessDays = 0

Set .ActiveConnection = objConnection
    .CommandType = 4
    .CommandText = strStoredQuery
    .Parameters.Append .CreateParameter("@OldDate",7,1,8,CDate(datActionDate))
    .Execute

Любая помощь будет принята с благодарностью !!

* Редактировать datActionDate - это число из цикла do. holidayLs в основном сверяет эту дату со списком дат

do until bdays = intNumberOfDays
    datActionDate = DateAdd("d", -1, datActionDate)
    if weekday(datActionDate) > 1 and weekday(datActionDate) < 7 then
        if not holidayLs(datActiondate) then
            businessDays = businessDays + 1
        end if
    end if
loop

1 Ответ

0 голосов
/ 20 марта 2019

После того, как я получил базовое представление о VB, достаточное для чтения этого кода, я обнаружил, что этот вопрос не столько о синтаксисе, сколько о простой работе через логику.@OldDate в конечном итоге станет числом около 470 дней с сегодняшнего дня, так как

DateAdd("d", -1, datActionDate)

вычитает день из datActionDate, который определяется как

datActionDate = Now()

Я был незнаком со днем ​​недели (), который просто дает числовой день.Таким образом, следующее утверждение

if weekday(datActionDate) > 1 and weekday(datActionDate) < 7 then

в основном ищет дни, которые не являются субботой и воскресеньями (для которых 105 в году - это будет МИНИМУМ, уменьшенное с сегодняшнего дня)

Когдавычитая выходные в праздничные дни (для которых их около 11) в этой строке

if not holidayLs(datActiondate) then

Тогда datActionDate = суббота, 24 ноября 2018 года

...