2014-02-21 3 views
1

Я использую этот пользовательский код, чтобы установить параметр, называемый TermCodes в SSRS:SSRS: Набор параметров с помощью пользовательского кода, кажется, не работает

Public Function setTermDates (ByVal academicYear as String) as String 
    dim results as String 
    dim startYear as String = Mid(academicYear, 3, 2)   'Line 70 
    dim endYear as String = Mid(academicYear, 8, 2) 

    results = chr(39) & "FS" & startYear & chr(39) & ", " & chr(39) & "SS" & endYear & chr(39) & ", " & chr(39) & "US" & endYear & chr(39) 

    return results 
End Function 

Значение @TermCodes является «FS13», «SS14» , 'US14'. SQL, я пытаюсь использовать этот параметр с является:

select 
min(StartDate1) FallStartDate, 
min(EndDate1) FallEndDate, 
min(StartDate2) SpringStartDate, 
min(EndDate2) SpringEndDate, 
min(StartDate3) SummerStartDate, 
min(EndDate3) SummerEndDate 
from (
    select 
     Start_Date, End_Date, 
     'StartDate' + cast(row_number() over(order by Start_Date) as char(1)) StartDates, 
     'EndDate' + cast(row_number() over(order by Start_Date) as char(1)) EndDates 
    from Term 
    where Term_Code in (@TermCodes) 
    ) t 
pivot (
     max(Start_Date) 
     for StartDates in(StartDate1,StartDate2,StartDate3) 
     ) sd 
pivot (
     max(End_Date) 
     for EndDates in(EndDate1,EndDate2,EndDate3) 
     ) ed 

Проблема заключается в том, что SQL будет ничего не возвращает. Если я наберу этот SQL в SQL Server Management Studio и заменим @TermCodes на вышеупомянутое значение, он будет работать. Почему это не работает в SSRS?

Спасибо!

Edit: Я также попытался это установить мой параметр с тем же результатом:

Public Function setTermDates (ByVal academicYear as String) as String() 
dim results(0 to 2) as String 
dim startYear as String = Left(academicYear, 4) 
dim endYear as String = Right(academicYear, 4) 

results(0) = "FS" + startYear 
results(1) = "SS" + endYear 
results(2) = "US" + endYear 

return results 
End Function 

ответ

0

Я этому не верю. Это была человеческая ошибка. Я просматривал оригинальный пользовательский код (который я помещал в «Правка») и заметил, что я использую целый год, а не последние две цифры. Новый код:

Public Function setTermDates (ByVal academicYear as String) as String() 
    dim results(0 to 2) as String 
    dim startYear as String = Mid(academicYear, 3, 2) 
    dim endYear as String = Mid(academicYear, 8, 2)  
    results(0) = "FS" + startYear 
    results(1) = "SS" + endYear 
    results(2) = "US" + endYear 

    return results 
End Function 

Я запустил отчет, и он работает так, как должен.

0

не знаю, почему он не работал бы в SSRS, но вы можете попробовать положить вам SQL-код в хранимой процедуре, а затем передать @TermCodes в качестве параметра хранимой процедуры, затем вызовите хранимую процедуру через набор данных в SSRS.

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