Sie verwenden ein Dataset für Standardwerte und Werte für Datumsparameter, was wahrscheinlich nicht der beste Ansatz ist.
Die Art und Weise, wie ich Berichte verarbeitet habe, die Endbenutzer abonnieren sollen, und die Standarddatumswerte variieren je nachdem, ob es sich um eine tägliche, wöchentliche oder monatliche Subskription handelt, muss einen zusätzlichen Parameter enthalten das ist möglich.
Der Parameter, den ich dem Bericht hinzufüge, ist ein I-Punkt (oder Berichtsperiode), und er muss der erste Parameter im Bericht sein oder mindestens vor den Datumsparametern aufgeführt sein. Die einzigen Werte im Dropdown-Menü für diesen Parameter sind Daily, Weekly und Monthly (falls zutreffend). Diese können sein, was auch immer Sie brauchen. Geben Sie diese Werte manuell als Wertoptionen in den Parameter im Bericht ein, da sich diese wahrscheinlich nicht häufig ändern. Je nachdem, was der Endbenutzer beim Erstellen eines Abonnements für diesen Parameter auswählt, ändern sich die Standarddatumswerte. Dies geschieht über einen Ausdruck im Standardwert für die Datumsparameter, der den aus dem Dropdown-Menü Zeitraum ausgewählten Wert auswertet.
Wenn also der Endbenutzer eine tägliche Subskription wünscht, wählt er aus der Dropdown-Liste Zeitraum die Option Täglich, und die Standardwerte für die Start- und Enddatumsparameter ändern sich nur auf den vorherigen Tag. Wenn sie "Wöchentlich" auswählen, ändern sich die Start- und Enddatumsparameter nur in die vorherige Woche usw.
Hier ist ein Beispiel für den Parameter für den Standardwert des Startdatums.
=Switch(Parameters!Period.Value = "Daily" , DateAdd(DateInterval.Day, -1, Today),
Parameters!Period.Value = "Weekly" , DateAdd(DateInterval.WeekOfYear, -1, DateAdd(DateInterval.Day, -(DatePart(DateInterval.Weekday, Today, 0, 0)-1), Today)) ,
Parameters!Period.Value = "Monthly" , DateAdd(DateInterval.Month, -1, DateAdd(DateInterval.Day, -(DatePart(DateInterval.Day, Today, 0, 0)-1), Today)))
Für das Enddatum Parameter ...
=Switch(Parameters!Period.Value = "Daily" , Today,
Parameters!Period.Value = "Weekly" , DateAdd(DateInterval.Day, -(DatePart(DateInterval.Weekday, Today, 0, 0)), Today) ,
Parameters!Period.Value = "Monthly" , DateAdd(DateInterval.Day, -(DatePart(DateInterval.Day, Today, 0, 0)), Today))
Warnung !! Wenn Sie den Wert für den Zeitraum entweder im Berichts-Designer (Vorschau) oder online ändern, werden die Datumswerte nicht automatisch vor Ihren Augen geändert. Es wird jedoch beim Erstellen (und damit beim Ausführen) eines Abonnements verwendet. Ich habe nie darüber nachgedacht, warum das so ist. Ich habe andere, weniger schmerzhafte Dinge, um meine Zeit zu füllen.
Probieren Sie es aus.