impulsado por los datos del servidor SQL parada de suscripción enviando
-
29-09-2019 - |
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?
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