现在的位置: 首页 > 综合 > 正文

VB.NET实现ReportViewer 显示参数化查询结果

2013年11月05日 ⁄ 综合 ⁄ 共 1526字 ⁄ 字号 评论关闭

           机房收费系统的最后一个功能(周结账单)的需求是根据用户选择的日期区间来查询结账数据表这一日期区间内的所有记录。但是在用ReportViewer时SQL语句并不是写在普通的代码区的,而是写在DataAdapter配置向导过程中的,这时就为平时习惯了在代码区编写参数化查询语句的人带来了点麻烦,可能大家一时想不出参数该写在什么地方,语句中的参数应该怎样才能穿进去,下面我将数据库数据源与 ReportViewer Windows 窗体控件一起使用的具体步骤记录下来希望对大家有所帮助:

1.首先建立Windows窗体应用程序,定义项目名称为ABC,不必多说大家都会。

2.为程序添加一个数据集。具体步骤为:右击项目名称选择添加--新建项--数据集,默认数据及名为DataSet1,这样我们就添加了一个数据集,剩下的就是为数据集配置数据源了。

3.将鼠标指向工具箱,从工具箱中拖拽一个TableAdapter到数据集界面上会出现一个datatable1,接下来进入DataAdapter配置向导。在配置向导界面上首先点击“新建连接”,进入下一个界面后选择我们所要连接的服务器的名称,然后选择“使用SQL Server身份验证”,还是在这个界面选择我们所要连接的数据库,测试连接成功后,点击确定完成数据库连接。

4.点击“确定”后进入下一个设置界面,选择“使用SQL语句”,然后“下一步”,进入到“输入SQL语句”的界面,在输入框中我们尽管按照实际所需,在需要设置参数的地方设置参数,比如:select * from SetAccountBill where DateToday>=@starttime and DateToday<=@endtime,在这句SQL语句中Table1是我们需要从中选取记录的表的名字,DateToday是Table1中的一个字段值,而@starttime和@endtime就是我设置的两个参数(注意,由于是根据表中字段的值的类型进行的参数化,所以在以后传递参数的时候,参数类型必须要与字段值的类型是一样的),然后我们可以点击“查询生成器”来检测我们的SQL语句是否有语法错误,如果有的话是不能通过编译的,编译无误,出现查询生成器的界面,点击“执行查询”后会弹出对话框让我们输入参数的值,不必管它,因为我们并不是在这里传入参数,直接关掉即可,至此检查SQL语句无误,关闭查询生成器对话框,进入到下一界面后选择默认(当然也可以自己设定方法名称等),直至完成定义数据源连接和datatable。

5.回到dataset界面,选择"数据"--“显示数据源”,我们刚才定义的数据集便会出现在左侧的“数据源”项中,展开数据集下的数据表会出现我们选择的字段(如果SQL语句中是*,当然会显示全部字段)。

6.设计报表。右击ABC,选择添加--新建项,选择“报表”,默认名称为“Report1”,鼠标移动到工具箱上,从工具向上拖拽”表“到Report1中,选择好数据源,也就是数据源框中显示的我们刚定义好的数据眼,然后将所要显示的字段依次拖到表头数据的左右,设置完表后,也可以根据需要,将文本框拖拽至表中用来显示系统时间等。

7.向应用程序添加 ReportViewer 控件,拖拽两个DateTimePicker作为参数的值传入sql语句,点击右上角的小三角图标,选择我们刚刚定义好的Report1作为显示源,在”生成“菜单上单击”生成ABC“,会报错,没有关系,这是因为我们没有为参数设置实参的原因,双击窗体进入代码区,会自动显示错误代码,我们只要Fill(这是默认方法名)的括号中添加入两个参数,也就是我们要传入的datetimepicker的值就没有问题了

抱歉!评论已关闭.