2012-11-27 15 views
7

Muszę ustawić start_date mojego raportu w zależności od parametru raportu. Znaczniki czasu są obliczane w kwerendzie bazy danych.Nie można użyć pól w wyrażeniu parametru raportu

Moje wyrażenie wygląda następująco:

=SWITCH (
    Parameters!report_type.Value = 1,First(Fields!daily_start.Value, "Timestamps") 
    ,Parameters!report_type.Value = 2,First(Fields!weekly_start.Value, "Timestamps") 
    ,Parameters!report_type.Value = 3,First(Fields!monthly_start.Value, "Timestamps") 
) 

Niestety pojawia się komunikat o błędzie:

Wyrażenie wartość używana dla parametru raportu „time_from” odnosi się do pola. Nie można używać pól w wyrażeniu parametru raportu:

Wiem, że jest to niedozwolone, ponieważ SSRS nie może być pewien, w którym zbiorze danych o zamówieniach są wywoływane. Ale myślę, że to nie jest niebezpieczne.

Wszystkie znaczniki czasu są odbierane przez zapytanie bez parametru. Parametr report_type jest wybierany przez użytkownika przed wygenerowaniem raportu.

Czy ktoś może dać mi wskazówkę, aby obejść ten problem?

+1

można użyć stałej ukryte parametry dla daily_start, weekly_start, miesięczne zamiast pól? – jbl

Odpowiedz

3

Oto sposób obejścia problemu: pobierz wartość za pomocą SQL.

Utwórz nowy zestaw danych o nazwie StartDates:

SELECT CASE 
    WHEN @report_type = 1 THEN daily_start 
    WHEN @report_type = 2 THEN weekly_start 
    WHEN @report_type = 3 THEN monthly_start 
END AS StartDate 
FROM MyTable 

Masz już parametry @report_type i @time_from. Za pomocą parametru @time_from ustaw wartości domyślne na Get values from a query przy użyciu zestawu danych StartDates i pola wartości StartDate.

Teraz można by pomyśleć, że to wystarczy, aby działało - odwołujesz się do tego zapytania jako wartości domyślnej, a po zmianie parametru @report_type pozostałe parametry odświeżają się, ale pierwsza data w parametrze @time_from nigdy nie jest zmiany. Dzieje się tak dlatego, że odświeżanie odbywa się w kwerendzie "Dostępne wartości", a nie w kwerendzie "Domyślne wartości".

Musisz więc połączyć zapytanie Dostępne wartości z zapytaniem StartDates. Teraz zapytanie zostanie wywołane zmianą @report_type, a wartość domyślna zostanie ustawiona na odpowiednią datę dla twojego wyboru.

+1

co, jeśli mogę to zrobić tylko w fetchxml? –

0

Przełączyłem z kwerendy na procedurę składowaną i otrzymywałem ten błąd. Czego próbowałem:

  • Zapewniony miałem wystarczających uprawnień w bazie danych (trzeba praw EXEC lub DBO uruchomić teh sproc)
  • Usuń istniejące parametry (a następnie użyć odświeżania pola, aby odświeżyć/pobiera prawidłowo nazwany te z tyłu)
  • Usuń nawiasów kwadratowych wokół procedury przechowywanej, jeśli już określone, że
+0

Usuwanie nawiasy kwadratowe pomogło, dzięki! – ConstantineK

0

Czasami Wyrażenia mogą się nieco rozwlekły. Stworzyłem funkcję kodu raportu, a następnie wykorzystałem ją jako wartość parametru.

Na przykład, stworzyłem funkcję kodu o nazwie "CalculateDateSet", a następnie ustawić parametr Zgłoś do tej wypowiedzi:

„= Code.CalculateDateSet (Month.Value parametrów Parametry Roku!.Wartość”

+0

mógłby pan być tak uprzejmy opracować nieco na temat proponowanego obejścia? – user3285866

Powiązane problemy