SQL Server datengesteuertes Abonnement Stop Senden
-
29-09-2019 - |
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?
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