SSRS - Web服务 - 数据集 - 无法读取数据集的下一个数据行

时间:2014-04-02 11:06:12

标签: c# reporting-services

我正在尝试使用SSRS 2010网络服务以html格式调用现有报告,以嵌入另一个网页。

我调用的报告取决于参数和报告中嵌入的其他3个数据集。

当我在浏览器中调用报告时,报告可以正常运行。

但是当我使用webservice调用报告时,发送所需的唯一参数我收到错误消息:

“无法读取数据集MembershipRegistrationPayments的下一个数据行。”

我感到困惑,因为该报告在浏览器中完美运行,并且运行报告所需的唯一“选择”是“俱乐部ID”。

这是我到目前为止的代码......

ReportExecutionService rsExec = new ReportExecutionService();

rsExec.Credentials = new NetworkCredential("usernamexxx", "passwordxxx", "domainxxx");

string report = "/DemoReport1";
bool forRendering = false;
string historyID = null;
string format = "MHTML";
string extension;
string mimeType;
string encoding;
string deviceInfo = null;
ReportExecution.Warning[] warnings;
string[] streamIDs;

ExecutionInfo execInfo = new ExecutionInfo();
ExecutionHeader execHeader = new ExecutionHeader();

rsExec.ExecutionHeaderValue = execHeader;

execInfo = rsExec.LoadReport(report, historyID);

var execParameters = new List<ReportExecution.ParameterValue>();
execParameters.Add(new ReportExecution.ParameterValue() { Name = "OrganisationID", Value = "1234" });

rsExec.SetExecutionParameters(execParameters.ToArray(), "en-GB");

byte[] reportBytes = rsExec.Render(
format,
deviceInfo,
out extension,
out mimeType,
out encoding,
out warnings,
out streamIDs);

生成报告时几乎没有调用数据集,因此它无法移动到数据集中的第一条记录?

我迷路了。非常感谢任何帮助!

崔佛

1 个答案:

答案 0 :(得分:2)

唷!最后解决了!

背景:

我有一个数据集,它创建了一些在另一个数据集中使用的固定日期。

作为一个例子,这是ORIGINALLY生成该日期的1个SQL语句之一。

SELECT
CASE
WHEN getdate() >= DATEADD(Day, 0, DATEADD(Month, 3, DATEADD(Year, DATEDIFF(Year, 0, getdate()), 0))) THEN DATEADD(Day, 0, DATEADD(Month, 3, DATEADD(Year, DATEDIFF(Year, 0, getdate()), 0)))
WHEN getdate() <= DATEADD(Day, 0, DATEADD(Month, 3, DATEADD(Year, DATEDIFF(Year, 0, getdate()), 0))) THEN DATEADD(Year, - 1, DATEADD(Day, 0, DATEADD(Month, 3, DATEADD(Year, DATEDIFF(Year, 0, getdate()), 0))))
END AS StartDate

我通过将日期结果转换为SQL语句中的varchar来解决问题,以便报表服务器不再尝试“内部”执行此操作

所以,我的SQL现在看起来像这样:

SELECT
CASE
WHEN getdate() >= DATEADD(Day, 0, DATEADD(Month, 3, DATEADD(Year, DATEDIFF(Year, 0, getdate()), 0))) THEN CONVERT(varchar,DATEADD(Day, 0, DATEADD(Month, 3, DATEADD(Year, DATEDIFF(Year, 0, getdate()), 0))) ,113)
WHEN getdate() <= DATEADD(Day, 0, DATEADD(Month, 3, DATEADD(Year, DATEDIFF(Year, 0, getdate()), 0))) THEN CONVERT(varchar,DATEADD(Year, - 1, DATEADD(Day, 0, DATEADD(Month, 3, DATEADD(Year, DATEDIFF(Year, 0, getdate()), 0)))) ,113)
END AS StartDate

现在报告完美无缺!