Domanda

Ho un rapporto in esecuzione sul controllo base oraria per i nuovi ordini. Sta funzionando ottima, tuttavia, vorrei inviare solo il rapporto se c'è almeno un ordine. Se il rapporto è vuoto - non voglio inviare il rapporto a tutti

.

Per estendere questo, vorrei inviare solo il rapporto se non nuovi ordini.

idee?

È stato utile?

Soluzione

Basta aggiungere una condizione nella query DDS per verificare il tempo di ordine. Se ci sono eventuali ordini nell'ultima ora la ricerca dovrebbe restituire il set di risultati altrimenti restituisce nulla.

Per esempio, nella query aggiungere il seguente logica

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

Nella vostra richiesta aggiungere la seguente clausola

 WHERE @HoursAgo > 0

Si potrebbe anche voler aggiungere controlli supplementari per assicurarsi che l'ordine è dal giorno corrente.

Altri suggerimenti

C'è una proprietà del set di dati RDL chiamata "NoRows" in grado di visualizzare un messaggio personalizzato se l'insieme di dati non ha righe restituite. Sarà ancora inviare il rapporto vuoto, solo con un messaggio speciale.

Se si desidera che la sottoscrizione in misura non il fuoco fuori del rapporto, allora l'unico modo che conosco per farlo è quello di verificare il conteggio delle righe della dichiarazione prescelta se la stored procedure e genera un errore se il conteggio delle righe è pari a zero. Non è un modo elegante per tirare fuori questo, ma non invierà la relazione perché l'errore si verifica sul lato T-SQL e SSRS non sarà in grado di rendere il rapporto.

declare @rows int

select @rows = -1

<select statement here>

select @rows = @@rowcount

if ( @rows < 1 )
begin
    RAISERROR ('no rows returned', 11, 1 );
end
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top