Parameterbeschränkung für Reporting Services

8

Ich habe einen Berichtsservice (SQL 2008) mit zwei Date / Time-Parametern - "begindate" und "enddate". Ich muss das Enddatum auf den gleichen Monat und das gleiche Jahr beschränken wie das Begin. Das scheint so zu sein, als ob es eine leichte Sache wäre, aber ich kann es nicht herausfinden.

Zurzeit überprüfe ich die Parameter, die an die gespeicherte Prozedur übergeben werden, und melde einen Fehler, wenn die beiden Datetime-Parameter nicht im selben Monat und Jahr liegen. Ich suche nach einer eleganteren Art, dies zu erreichen.

    
jhale 03.03.2009, 14:38
quelle

4 Antworten

6

Sie können den EndDate-Wert im Parameter expression überprüfen, und wenn er falsch ist, legen Sie ihn auf StartDate + 1 Month fest.
Etwas wie:

%Vor%

Wenn Sie nur einen Benutzer benachrichtigen möchten, können Sie ein ausgeblendetes Textfeld mit der entsprechenden Formatierung (rote, große Schrift) und eine Nachricht über den falschen Bereich des Datumsparameters platzieren. In Versteckter Ausdruck legen Sie

fest %Vor%

Sie können beide Aktionen auch mit benutzerdefiniertem Code kombinieren:

%Vor%

Dann in Parameter Wert Ausdruck:

%Vor%

In der Value-Eigenschaft des tbDateParameterMessage-Textfelds:

%Vor%

Und im Ausdruck der ausgeblendeten Eigenschaft:

%Vor%

BEARBEITEN Verwenden Sie diesen benutzerdefinierten Code jedoch, wenn Sie das Ausführen des Berichts stoppen möchten:

%Vor%

Es stammt aus dem SQLServerCentral-Forum .

    
Max Gontar 03.03.2009, 15:44
quelle
1

Sehr häufig gibt es Bereitstellungsprobleme mit der Msgbox-Funktion in einem SSRS-Bericht. Sie funktionieren gut auf unseren Entwicklungsmaschinen, aber es kann schwierig sein, wenn sie tatsächlich eingesetzt werden. Hier sind ein paar Links, die die Probleme erklären:

Von MSDN

Von SQLDev

Meine Lösung war eine sehr einfache Implementierung, bei der der Bericht gestoppt wurde, aber es zeigt einfach einen Berichtfehler mit der Meldung an, die dem Benutzer aus der Berichtsanzeige angezeigt wird.

  1. Erstellen Sie einen neuen text / string-Parameter (ich nannte es CheckDateRange)
  2. Leere Werte zulassen und verdecken
  3. Verfügbare Werte = keine
  4. Erweitert = Standardwerte verwenden
  5. Standardwerte = Werte angeben - Verwenden Sie in Value die Funktionsschaltfläche und verwenden Sie Folgendes: = CODE.CheckDateParameters (Parameter! BeginDate.Value, Parameter! EndDate.Value) - Beachten Sie, dass Sie meine Parameternamen für das Überprüfte sehen können Daten sind BeginDate und EndDate
  6. Schließlich geben Sie für den Berichtscode das folgende Code-Snippet ein:

    %Vor%

Nichts Schickes, aber erfüllt was Sie brauchen.

Viel Glück!

    
Catchops 23.05.2011 14:14
quelle
0

Ich habe die Idee mit dem versteckten Textfeld verwendet, weil es besser war, als den Bericht abstürzen zu lassen. Was ich damit erreichen wollte, war, den Benutzer zu zwingen, seine Parameter zu ändern, bevor der Bericht ausgeführt wurde.

Übrigens, die Syntax hat nicht funktioniert. Ich habe das stattdessen verwendet:

%Vor%

Vielen Dank für die Idee.

    
jhale 03.03.2009 19:16
quelle
0
%Vor%

Wenn sie keine Änderungen vorgenommen haben, funktioniert die Funktion MsgBox () nicht auf SSRS. Es funktioniert nicht auf SSRS 2010. Ich glaube, es ist eine Windows-Funktion, so kann nicht auf einer gerenderten Webseite verwendet werden.

    
user1413844 02.07.2013 03:45
quelle

Tags und Links