Pregunta

Tengo un informe que se ejecuta en la comprobación de cada hora para los nuevos pedidos. Ya funciona correctamente sin embargo, me gustaría enviar sólo el informe si hay al menos un pedido. Si el informe está vacío - No quiero enviar el informe a todos

.

Para extender esto, me gustaría enviar sólo el informe si hay nuevas órdenes.

Las ideas?

¿Fue útil?

Solución

Sólo tiene que añadir una condición en la consulta DDS para comprobar el tiempo de la orden. Si hay cualquier orden en la última hora de su consulta debe devolver el conjunto de resultados de lo contrario nada de retorno.

Por ejemplo, en la consulta añada la siguiente lógica

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

En la consulta añadir la siguiente cláusula

 WHERE @HoursAgo > 0

También puede ser que desee agregar comprobaciones adicionales para asegurarse de que la orden es a partir del día actual.

Otros consejos

Hay una propiedad del conjunto de datos RDL llamada "NoRows" que pueden mostrar un mensaje personalizado si el conjunto de datos no tiene ningún filas devueltas. Todavía se enviará el informe vacío, sólo con un mensaje especial.

Si desea que la suscripción a no llamas más allá del informe entonces la única forma que conozco para hacer esto es comprobar el número de filas de la instrucción de selección si el procedimiento almacenado y un error si el número de filas es igual a cero. No es una manera elegante de sacar esto adelante, pero no enviará el informe porque el error se produce en el lado de T-SQL y SSRS no será capaz de representar el informe.

declare @rows int

select @rows = -1

<select statement here>

select @rows = @@rowcount

if ( @rows < 1 )
begin
    RAISERROR ('no rows returned', 11, 1 );
end
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top