基本上我正在创建 vb.net窗口应用程序 ,它可以在 rdlc报告中显示结果...
在后端它是 SQL server 2008。
是否有任何简单的方法可以根据行和列分组填充RDLC Tablix。
情况如下。
我在这样的SQL服务器中有一个表
**Course Adcat sub1 sub2 sub3 sub4 sub5**
Ba1 Reg HL Hlit His PS Env
Ba1 Reg EL Hlit HS Socio Env
Ba1 Pri HL His Hlit HS Env
Ba1 Reg SL Socio Slit PS Env
这就像在不同类别注册的不同课程的学生,选择不同的科目,如上图所示,它存储在五列中。
我只想在RDLC中看到这样的报告
**Course subject Reg Pri**
BA1 HL 1 1
EL 1 0
SL 1 0
Hlit 2 1
His 1 2
PS 1 1
HS 1 0
Socio 2 0
所以没有。
我只想计算上面五列中的主题数量。
请帮助我
我正在使用VB.NET窗口应用程序和Sql server 2008。 提前完成。
感谢回复.. 我创建了一个SQL查询并将其保存为视图中的小计。 现在如何使用按钮单击从我的vb.net应用程序中调用它。 我使用的代码是:
Public Sub Show_SubjectSummary()
sqlQRY = "SELECT * FROM tblstudetail where" _
& "[session] = '2015' AND" _
& "[course] = 'B.A. I' AND" _
& "[ADstatus] LIKE 'OK'"
ds = New DataSet
da = New SqlDataAdapter(sqlQRY, Conn)
da.Fill(ds, "tblstudetail")
RDLCreportview.ReportViewer1.LocalReport.ReportEmbeddedResource = Application.StartupPath & "\Report\SubjectSummary.rdlc"
sReportDataSource.Name = "DataSet1"
sReportDataSource.Value = ds.Tables(0)
RDLCreportview.ReportViewer1.LocalReport.ReportPath = Application.StartupPath & "\Report\SubjectSummary.rdlc"
RDLCreportview.ReportViewer1.SetDisplayMode(DisplayMode.PrintLayout)
RDLCreportview.ReportViewer1.RefreshReport()
ds.Dispose()
ds = Nothing
RDLCreportview.ShowDialog()
RDLCreportview.Dispose()
Conn.Close()
End Sub
答案 0 :(得分:0)
据我记忆,由于决赛桌的复杂性,这是不可能的。在你的情况下我看到了一个解决方案您需要更改查询。您不需要直接使用表,而是需要修改查询以满足您的需要,然后填入报表。我就是这样编写的(TESTED
):
CREATE TABLE #tempSO
(
course varchar(10),
adcat varchar(10),
sub1 varchar(10),
sub2 varchar(10),
sub3 varchar(10)
)
INSERT INTO #tempSO VALUES ('Ba1', 'Reg', 'HL','Hlit', 'His')
INSERT INTO #tempSO VALUES ('Ba1', 'Reg', 'EL','Hlit', 'HS')
INSERT INTO #tempSO VALUES ('Ba1', 'Pri', 'HL','His', 'Hlit')
INSERT INTO #tempSO VALUES ('Ba1', 'Reg', 'SL','Socio', 'Slit')
SELECT course, sub,
sum([Reg]) AS Reg, sum([Pri]) AS Pri
FROM (
SELECT course, sub1 AS sub, adcat
FROM #tempSO
UNION ALL
SELECT course, sub2 AS sub, adcat
FROM #tempSO
UNION ALL
SELECT course, sub3 AS sub, adcat
FROM #tempSO
) SourceTable
PIVOT
(
COUNT(adcat) for adcat IN ([Reg], [Pri])
) PivotTable
GROUP BY course, sub
您还可以使用上面的查询在数据库中创建视图。然后在报告中调用该视图而不是原始表。在这种情况下,您可以根据需要在不同的报告中重复使用该视图。
更新(根据您的更新):
以下是sqlQry
变量现在的样子:
sqlQRY = "SELECT course, sub, sum([Reg]) AS Reg, sum([Pri]) AS Pri FROM( " _
& "SELECT course, sub1 AS sub, adcat FROM tblstudetail UNION ALL " _
& "SELECT course, sub2 AS sub, adcat FROM tblstudetail UNION ALL " _
& "SELECT course, sub3 AS sub, adcat FROM tblstudetail) SourceTable " _
& "PIVOT (COUNT(adcat) for adcat IN ([Reg], [Pri])) PivotTable GROUP BY course, sub " _
& "where [session] = '2015' " _
& "AND [course] = 'B.A. I' " _
& "AND [ADstatus] LIKE 'OK'"