Frage

Ich habe einen Bericht über die Stundenbasis Prüfung für neue Aufträge ausgeführt wird. Es funktioniert so groß, ich möchte nur den Bericht senden, wenn es mindestens einen Auftrag. Wenn der Bericht leer ist - ich will nicht den Bericht überhaupt senden

.

Um dies zu erweitern, ich möchte nur den Bericht senden, wenn es neue Aufträge.

Ideen?

War es hilfreich?

Lösung

Fügen Sie einfach eine Bedingung in Ihrer DDS-Abfrage für die Bestellung Zeit zu überprüfen. Wenn es irgendwelche Aufträge in der letzten Stunde sind Ihre Anfrage Ihre Ergebnismenge zurückgeben sollte sonst nichts zurück.

Zum Beispiel in Ihrer Abfrage fügen Sie die folgende Logik

 DECLARE @HoursAgo int
 SELECT Top 1 @HoursAgo = DateDiff('hh',getdate(), OrderTime) 
 FROM Orders 
 ORDER BY OrderTime DESC  

In Ihrer Anfrage fügen Sie die folgende Klausel

 WHERE @HoursAgo > 0

Sie mögen vielleicht auch zusätzliche Kontrollen hinzuzufügen, um sicherzustellen, dass die Bestellung vom aktuellen Tag.

Andere Tipps

Es ist eine Eigenschaft des RDL-Datensatz „NoRows“ genannt, die eine benutzerdefinierte Nachricht anzeigen kann, wenn der Datensatz hat keine zurückgegebenen Zeilen. Es wird nach wie vor dem leeren Bericht, nur mit einer Sondermeldung senden.

Wenn Sie das Abonnement nicht Feuer aus dem Bericht dann der einzige Weg, ich will wissen, dies zu tun ist, um die Zeilenanzahl der select-Anweisung, wenn Ihre gespeicherte Prozedur zu überprüfen und einen Fehler aus, wenn die Zeilenanzahl gleich Null ist. Nicht ein eleganter Weg, um diesen weg zu ziehen, aber es wird den Bericht nicht gesendet werden, da der Fehler auf der Seite T-SQL geschieht und SSRS nicht in der Lage sein, den Bericht zu machen.

declare @rows int

select @rows = -1

<select statement here>

select @rows = @@rowcount

if ( @rows < 1 )
begin
    RAISERROR ('no rows returned', 11, 1 );
end
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top