vb.net ReportViewer开始入门1

最近几天都被这个报表的数据源困扰,希望我写出来后能帮到后面自学的同学。

首先,从最基本的开始,新建一个windows窗体项目,在工具箱中拖一个ReportView控件在窗体上,我设置是“在父容器中停靠”,在右上角的小三角上,选择新建报表,打开新建数据集--我用的IDE是vs2010。

按正常情况新建一个连接,这个连接以后也不用,所以只要能连上就好,可以不用保存密码,在后面的代码中可以处理的。数据集一定要包含需要显示出来的字段。

vb.net ReportViewer开始入门1

因为这是一个学习、测试用报表,所以没有认真从另一个表提取名称规格型号。

报表的外围,单击右键可以设置报表的属性,我是把纸张设置成A5,横向。在报表中间可以单击右键选择插入>页眉或页脚,插入后再插入相应的文本框,选择常用的字体和合适的字号、颜色。页眉和页脚的内容在每一页都是一样的,除非使用了变量!

报表中的主体部分采用的是表格,也是在右键里找到的,第一行,呈深灰色,称为表头,这一行每一页都会被打印出来,而且也是不会变化的。从第二行开始,就是数据区域了。

这个第一列序号是在数据区,填入了一个表达式,内容【=RowNumber(Nothing)】,这是我从****里其他的文章里学来的,感谢分享!通过这个表达式,在表格里,会自动从1开始显示序号,如果不是在表格中,会显示最大的一个序号,而不是汇总之类的。

页脚里的【第 页,共 页,打印时间:】,里面插入了当前页函数【[&Globals!PageNumber]】和总页数【[&Globals!TotalPages]】和当前运行程序电脑的时间【[&now]】

好,现在来重点了,也是我最近几天一直在思考、学习未曾成功的地方:

vb.net ReportViewer开始入门1

当我们通过向导添加完成数据集后,系统会自动给我们添加这些适配器,当然我认为那个【BOM明细表BindingSource】是可以不需要的,因为这个涉及到SQL的更新命令【Insert\Update\Delete】,可以根据自己的需要选择。这个是在

vb.net ReportViewer开始入门1

vb.net ReportViewer开始入门1

vb.net ReportViewer开始入门1

这个在建立的时候就可以考虑取消。一般没有什么特别的用。

这里顺便讲一下,前面我们根据向导添加的数据集,是通过这个窗口的SQL语句来提取数据的,当然,我们不会用到这个,因为我们要用到我们的VB.NET窗体代码来控制数据。

贴上代码:

Imports System.Data
Imports System.Data.SqlClient
Imports Microsoft.Reporting.WinForms
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'TODO: 这行代码将数据加载到表“yhxAllDataSet.BOM明细表”中。您可以根据需要移动或删除它。
        Dim con As New SqlConnection("Data Source=WILTAN-PC\SQLEXPRESS;Initial Catalog=yhxAll;Integrated Security=True")
        Dim da As New SqlDataAdapter("SELECT rtrim(母件编码) as 母件编码,rtrim(BOM明细表.物料编码) as 物料编码,rtrim(物料编码.名称规格型号) as 名称规格型号,基本用量,rtrim(领料方式) as 领料方式 FROM BOM明细表 join 物料编码 ON BOM明细表.物料编码=物料编码.物料编码 where 母件编码='YSC450.04'", con)
        da.Fill(Me.yhxAllDataSet.BOM明细表) '重点代码,根据自己的数据适配器来提取数据并填充到数据集中。
       Me.ReportViewer1.RefreshReport() ’刷新报表
    End Sub
End Class

OK,就算是这样了,成果如下图:

vb.net ReportViewer开始入门1

目前重点学习从其他表中提取的数据也一并显示到报表中来。

写的不好,恳请各位指教!