我是MSSQL和SSRS的新手。
我正在尝试在MSSQL 2008 Standard SSRS中创建一个数据驱动的订阅,它执行以下操作: 我需要向我的用户发送/发送包含报告的电子邮件,以防报告中包含数据。这将使用收件人列表,并且必须适用于多个电子邮件地址的多个结果。
我想这样做的方法是根据查询结果进行订阅。如果查询没有返回任何结果,那么电子邮件就不会消失。但如果找到结果,则会发送带有报告的电子邮件。
有关如何做到这一点的任何建议,或者您是否可以在互联网上提出已有描述的内容?
同样在下面的链接中我发现了类似于我需要的内容,但是我在编写RunADDR时遇到了困难。任何帮助是极大的赞赏。 Mike Christie解决方案: Data Driven Subscriptions SSRS Standard Edition 2008
答案 0 :(得分:0)
您可以创建执行常规订阅的sql代理作业。 查找订阅ID并在SQL代理作业中写入查询
return
DbContext.Schemes
.Join(
DbContext.SchemeColours,
s => s.SchemeID,
sc => sc.SchemeID,
(s, sc) => new
{
s.SchemeID,
s.Label,
sc.Colour,
sc.Result,
sc.ColourID
})
// After joining you group by SchemeID, in this way you have
// for each SchemeID the group of related items
.GroupBy(a => a.SchemeID)
// You then create your result, starting from the main object
.Select(g =>
new Overlay.ReportColourScheme
{
ID = g.Key,
// I suppose you have at least a child for each SchemeID,
// otherwise you can check if the list is empty
Label = g.FirstOrDefault().Label,
// For each group you create a list of child object
Colours = g.Select(v => new Overlay.ReportColour
{
ID = v.ColourID,
Value = v.Colour,
Result = v.Result
}).ToList()
})
.ToArray();
如果表中存在if存在的数据,则会发送非数据驱动的订阅,而不是没有数据。
答案 1 :(得分:0)
您可以使用数据驱动订阅来执行您想要的操作。数据驱动的查询类似于:
IF EXISTS (<your report dataset>)
SELECT 'recipient emails' as ToAddress
FROM MyEmailList
ELSE
SELECT 'no one' as ToAddress
然后在电子邮件设置中为“TO:”地址选择此列。当然,您可以添加多个电子邮件和任何其他参数。