2017-04-11 3 views
0

Ich brauche Hilfe, um die vorherigen Werktage zu ziehen und die Wochenenden in SSRS auszuschließen. Ich benutze den folgenden Code, aber dieser Code sieht nicht über die Wochenenden hinaus.SSRS - Wie früher Freitag mit SSRS-Ausdruck ziehen

Hier ist der Code, den ich normalerweise verwenden:

=DateAdd(DateInterval.Day 
, Switch(DatePart(DateInterval.WeekDay, Today()) = 2, -3 
,DatePart(DateInterval.WeekDay, Today()) = 1, -2 
,True, -1) 
, Today()) 

Hat jemand irgendwelche Gedanken darüber, wie ein SSRS Ausdruck zu schreiben, vorbei an den Wochenenden zu suchen und nur Werktag ziehen?

+0

Meinen Sie wollen Sie den vorherigen M-F Geschäftstag eines bestimmten Tages? –

+0

Nein, ich muss den vorherigen Freitag ziehen und ihn im Bericht einstellen lassen. Jeden Montag müssen wir Freitagsdaten ziehen. – BIReportGuy

+0

Was meinen Sie mit dem Code sieht nicht über die Wochenenden hinaus? Können Sie Ihre Frage so bearbeiten, dass sie die Erwartungen enthält, die Sie für einen Datumsbereich erwarten, wenn der Bericht an einem Sonntag, Montag, Dienstag, Mittwoch usw. ausgeführt wird? –

Antwort

0

Fortsetzung dieses und arbeitete hier mit anderen zu erkunden ... Das ist, was wir mit zum vorherigen Arbeitstag aussehen kam und die Wochenenden aus, wenn sie an einem Montag den Bericht ziehen. Dieser Ausdruck würde zum Datumsparameter hinzugefügt werden.

=Switch(WeekdayName(DatePart("w", Today)) = "Wednesday",DateAdd(DateInterval.Day 
    , Switch(DatePart(DateInterval.WeekDay, Today()) = 2, -3 
,DatePart(DateInterval.WeekDay, Today()) = 1, -2,True, -2) , Today()), 

    WeekdayName(DatePart("w", Today)) = "Thursday",DateAdd(DateInterval.Day 
    , Switch(DatePart(DateInterval.WeekDay, Today()) = 2, -3 
,DatePart(DateInterval.WeekDay, Today()) = 1, -2,True, -2) , Today()), 

    WeekdayName(DatePart("w", Today)) = "Friday",DateAdd(DateInterval.Day 
    , Switch(DatePart(DateInterval.WeekDay, Today()) = 2, -3 
,DatePart(DateInterval.WeekDay, Today()) = 1, -2,True, -2) , Today()), 

    WeekdayName(DatePart("w", Today)) = "Saturday",DateAdd(DateInterval.Day 
    , Switch(DatePart(DateInterval.WeekDay, Today()) = 2, -3 
,DatePart(DateInterval.WeekDay, Today()) = 1, -2,True, -2) , Today()), 

    WeekdayName(DatePart("w", Today)) = "Sunday",DateAdd(DateInterval.Day 
    , Switch(DatePart(DateInterval.WeekDay, Today()) = 2, -3 
,DatePart(DateInterval.WeekDay, Today()) = 1, -2,True, -3) , Today()), 

    WeekdayName(DatePart("w", Today)) = "Monday",DateAdd(DateInterval.Day 
    , Switch(DatePart(DateInterval.WeekDay, Today()) = 2, -3 
,DatePart(DateInterval.WeekDay, Today()) = 1, -2,True, -4) , Today()), 

    WeekdayName(DatePart("w", Today)) = "Tuesday",DateAdd(DateInterval.Day 
    , Switch(DatePart(DateInterval.WeekDay, Today()) = 2, -3 
,DatePart(DateInterval.WeekDay, Today()) = 1, -2,True, -2) , Today()) 

) 
0

Möglicherweise haben Sie einen anderen ersten Tag der Woche festgelegt (abhängig von der Region oder wie der Server konfiguriert ist). Explizit FirstDayOfWeek in der DatePart Funktion Einstellung unabhängig von dieser Einstellung konsistente Ergebnisse geben soll:

=DateAdd(DateInterval.Day 
    , Switch(DatePart(DateInterval.WeekDay, Today(), FirstDayOfWeek.Sunday) = 2, -3 
     ,DatePart(DateInterval.WeekDay, Today(), FirstDayOfWeek.Sunday) = 1, -2 
     ,True, -1) 
    , Today()) 
0

Wenn Sie ein Datum Parameter bis Freitag auf dem Standard wollen, wenn der Bericht an einem Montag ausgeführt (sonst der Standard ist der Stand des Tages), versuchen Sie dies:

=DateAdd(DateInterval.Day, IIf(DatePart(DateInterval.Weekday, Today) = 2, -3, -1), Today)

Das alles sein kann, was Sie wirklich brauchen.

Der folgende Ausdruck kann verwendet werden, um einen Datumsparameter auf den vorherigen Freitag zu setzen, unabhängig davon, an welchem ​​Wochentag der Bericht ausgeführt wird. Dies kann für die wöchentliche Berichterstattung von Vorteil sein.

=DateAdd(DateInterval.Day, -(DatePart(DateInterval.Weekday, DateAdd(DateInterval.Day, 1, Today), 0, 0)), Today)