我们在这里以机房收费系统周结账单为例,讲解一下VS2008报表的制作
新建一个窗体,从工具箱中拖一个MicrosoftReportViewer控件到窗体中,点击MicrosoftReportViewer右边的小三角,然后选择设计新报表
选择已有数据源或添加新数据源
我们在这里添加数据源
选择已有连接或新建连接
我们在这里新建连接,测试连接成功后,选择确定
之后单击下一步,选择数据库对象,单击完成
选择新添加的数据源,选择下一步
选种左边字段,点击详细信息,点击下一步
点击下一步,对报表重命名,点击完成
我们进入报表设计窗体,窗体左侧会出现工具箱,数据源,我们还可以通过视图->工具栏,选择相应的报表菜单。
注意图中的每个小窗格都是文本框,我们可以自己手动输入要显示的文字,也可以根据需要右击单个文本框,选择表达式,
注意:选择函数的返回值和参数的设定数据类型必须一致,否则会出现:报表内部错误地提示
我们相应的定义endDate
设计好报表后,关闭设计报表窗口,通过右击ReportViewer1控件的小三角,选择报表来源,选择后,我们可以看到窗体下角的数据库连接控件
我们通过右击文本框选择表达式来给各个文本框赋值,并对报表进行布局(所见即所得)
我们需要通过使用向导配置数据集
我们通过添加或者配置已有的查询来得到自己想要的数据,然后通过查询生成器
Private Sub btnQuery_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles btnQuery.Click begindate = beginDatePicker.Text.Trim enddate = endDatePicker.Text.Trim '报表参数,注意此处的字符串“”必须与报表中的参数一致,区分大小写,否则就会报错 Dim params() As ReportParameter = {New ReportParameter("AdminName",admin.Name),_ New ReportParameter("beginDate",begindate),_ New ReportParameter("endDate",enddate),_ New ReportParameter("Stime",Format(Now,"HH:mm:ss"))} '接受报表参数 ReportViewer1.LocalReport.SetParameters(params) '利用我们之前利用设计器编辑的数据集中的查询语句,为我们的报表中加载数据,需要提供查询语句中的参数 Me.T_WStatement_infoTableAdapter.FillWeek(Me.Room_Charge_SystemDataSet1.T_WStatement_info,begindate,enddate) Me.T_DStatement_infoTableAdapter.FillWeek(Me.Room_Charge_SystemDataSet.T_DStatement_info,enddate) Me.ReportViewer1.RefreshReport() End Sub
这次报表的制作可谓费时费力,之前看了一篇崔成龙师哥的博客,其中有"报表数据"一项,可以直接将参数拖到文本框中,可是师哥用的是VS2010啊,我用的VS2008呀,这其中版本有别,参数添加方式同样有别,现在才知道VS2008是通过右击文本框通过表达式添加参数的。呵呵,凡事不可钻牛角尖啊,费时费力还费感情。