0

Это мой первый вопрос на Stack, хотя у меня было много ответов здесь 8-)Использование Visual Studio 2008 с построителем отчетов 3.0 - Как добавить пользовательскую функцию VB для расчета даты за 90 дней до даты в другом поле

Мой работодатель использует SQL Server Business Intelligence Development Studio с Visual Studio 2008 и построителем отчетов 3.0 для создания отчетов из списков SharePoint.

Они хотят, чтобы я создал функцию в VB, которую я могу вызвать из выражения построителя отчетов, которое будет смотреть на дату (NeedDate), которая также отображается в таблице в отчете, и отображать дату в другой ячейке, которая За 90 дней до этой даты. Это должна быть функция VB, которая вызывается в построителе выражений - это требование моего босса.

Я использовал это в построителе выражений в построителе отчетов, и он работал: = iif (ReportItems! NeedDate.Value = Nothing, Nothing, DateAdd (DateInterval.Day, -90, ReportItems! NeedDate.Value)) но мой босс хочет, чтобы я использовал эту функцию и вставлял ее после «= iif (ReportItems! NeedDate.Value = Nothing, Nothing» в качестве «кода. что нужно здесь ...»

У меня нет я не понимаю, как заставить функцию VB, написанную в дизайнере Visual Studio, работать в построителе отчетов, вставив «код». Я не знаю синтаксиса для ввода даты из одного элемент отчета, вычитая 90 дней с этого и отображая его в другой ячейке отчета. Таким образом, я обращаюсь к вам за советом/помощью, а очень благодарен!

+3

Вы должны быть в состоянии используйте встроенную функцию DATEADD для достижения того, что вам нужно. VB кажется непреднамеренным. – Sam

+0

Сэм, спасибо, что ответили. Согласитесь полностью - это самая странная среда с самыми странными требованиями, которые мне когда-либо приходилось работать. Я действительно получил функцию VB, если есть интерес, я отправлю ее. – WCS

ответ

0

Итак, ответ был таков:

Я использовал это выражение в поле:

=Code.SubtractDays(90, ReportItems!ActionNeedDate.Value)


И это функция:

Function SubtractDays(ByVal days As Integer, ByVal dateField As String) As String 
    If Not IsDate(dateField) Then 
     Return "" 
    Else 
     Dim nDayCal As Date = DateAdd(DateInterval.Day, -(days), CDate(dateField)) 
     Return Format((nDayCal), "dd-MMM-yy") 
    End If 
End Function