2017-01-11 1 views
0

Können wir RAISE ERROR im Befehlstext der RDL-Datei für einen SSRS-Bericht hinzufügen?SSRS-RDL-Datei - Befehl Text - RAISE ERROR

Mein Bericht erstellt eine leere PDF-Datei aufgrund fehlender Daten in der Datenbank. Ich möchte die Daten überprüfen, und wenn keine Daten gefunden werden, muss ich den Fehler melden. Ist das möglich?

Oder wie können wir nach dem Render-Aufruf die Inhaltsdaten für die Datei überprüfen? Gibt es eine Möglichkeit, das zu tun?

Wir verwenden SSRS-2008-R2-Version. und wir führen reports durch eine C# .net-Anwendung, also rufe ich den Bericht über eine Reporting Services WebServices, und es gibt ein Byte-Array, das das Ergebnis der Berichte, aber die Array-Byte immer bringen Byte, weil die Berichte hat einen Header, daher tritt Bytes auf.

Ich muss das Bytearray überprüfen, um zu entscheiden, ob das PDF erzeugt werden soll oder nicht.

Wie kann ich das tun?

Antwort

0

Es gibt eine integrierte Funktion in SSRS, mit der Sie überprüfen können, ob ein DataSet über Zeilen verfügt.

=CountRows(“DataSet1”) 

Sie können dies immer überprüfen und entsprechende Maßnahmen ergreifen.

Ich mag diese für einen Tablix/Matrix in der Hidden-Eigenschaft verwenden, und es verstecken, wenn die Zeilenanzahl ist 0.

=IIf(CountRows(“DataSet1”) = 0, True, False) 

Auch Ich mag ein Textfeld in dem Bericht hinzuzufügen, die einfach enthält die Wörter Keine Daten zum Bericht. Dann zeige ich, dass wenn das Dataset leer ist, es über seine ausgeblendete Eigenschaft verfügt.

Keine Notwendigkeit, einen Raise-Fehler zu tun, behandeln Sie das Problem mit ein wenig Finesse. Dies funktioniert mit allen Versionen von SSRS.

EDIT:

Ein anderer Weg, dies zu tun ist, um eine gespeicherte Prozedur für die Datenmenge Quelle verwenden. Behandle die ganze Logik dort. Wählen Sie die Daten in einer temporären/arbeitsfähigen Tabelle aus, prüfen Sie, ob die Anzahl der Zeilen 0 ist, ergreifen Sie die notwendigen Maßnahmen (E-Mail senden, Daten zurücksenden oder beides).

Eine andere Möglichkeit könnte eine datengesteuerte Subskription sein; das ist verfügbar, wenn Sie SSRS Enterprise Edition ausführen. Dann könnten Sie einen Bericht erhalten, der Sie auf Datenanomalien aufmerksam macht, die Sie überwachen möchten.

+0

Wenn die CountRows() 0 zurückgibt, muss ich einige Nachrichten erhalten. wie kann das gehen? – Sahi

+0

Was meinst du damit, einige Nachrichten zu bekommen? –

+0

Ich stehe die generate pdf Anfrage in msmq an und lese die Daten aus der Replikationsdatenbank. bis zu dem Zeitpunkt, an dem die Verarbeitung der Anforderung durch msmq beginnt, ist die Replikation nicht erfolgt. daher wird der Datensatz leer sein. Wenn das Dataset leer ist, geben Sie eine Nachricht oder ein leeres Dataset von der ssrs-RDL zurück, und binden Sie die Anforderung erneut in msmq ein. – Sahi