vb.net报表参数 vb 报表-成都快上网建站

vb.net报表参数 vb 报表

VB.NET中向报表传递参数时出错

SetParameters传递的参数是Parameters,是 ReportParameter的集合,转换当然会出错

成都创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站建设、成都网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的高阳网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

可以改为 ReportViewer1.LocalReport.SetParameters(New ReportParameter() {temp})

vb.net reportviewe rdlc报表

With Me.ReportViewer1 '初始化报表

.Dock = DockStyle.Fill

.LocalReport.DataSources.Clear()

.LocalReport.ReportPath = "Report1.rdlc"

.RefreshReport()

End With

报表在设计时,不一定要绑定数据源,但在窗体加载时,需要初始化报表控件,以上代码可以放在窗体加载的Load事件里,供你参考。

如何用VB.NET做水晶报表?

CrystalReportViewer

dataset 定义数据源

.rpt 文件描述具体报表样式

再加一个调用报表的FORM,就可以实现简单的报表功能

Option Explicit

dim Report as New Cystal1

Private Sub Form_Load()

 Screen.MousePointer = vbHourglass

 '调用水晶报表时置鼠标为沙漏状 CRViewer91.ReportSource = Report '该语句的赋值将在后面被修改

 CRViewer91.ViewReport

 Screen.MousePointer = vbDefault '调用水晶报表完成后置鼠标为默认形状

End Sub

Private Sub Form_Resize()

 CRViewer91.Top = 0

 CRViewer91.Left = 0

 CRViewer91.Height = ScaleHeight

 CRViewer91.Width = ScaleWidth

End Sub

vb.net 水晶报表问题:水晶报表数据来源与数据库,怎样把数据库中同一个字段的各个小类按不同属性分为大类

Private Sub daywaterlevel_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'创建一个内含连接信息的数据库链接对象

Dim myConnection As New SqlConnection

myConnection.ConnectionString = "Persist Security Info=False;Integrated Security=SSPI;database=cwfzx;server=yllsony;Connect Timeout=30 "

'定义一个报表对象

Dim myreportDoc As New ReportDocument

Dim myDBConncetionInfo As ConnectionInfo

Dim myTable As Table

'循环处理Tables集合中的每一个Table对象并设置登陆信息

For Each myTable In myReportDoc.Database.Tables

myDBConncetionInfo = myTable.LogOnInfo.ConnectionInfo()

With myDBConncetionInfo

.ServerName = "yllsony "

.databaseName = "cwfzx "

.UserId = "sa "

.Password = "636490 "

End With

Next

'定义一个sqldataAdapter类型的变量

Dim MyCommand As SqlDataAdapter

'创建数据集对象

Dim ds As DataSet = New dsDayWater

'创建一个SqlDataAdapter对象

MyCommand = New SqlDataAdapter( "select stcd,tm,z from tb_river_r ", myConnection)

'链接到数据库,提起数据,然后中断链接

MyCommand.Fill(ds, "tb_river_r ")

'载入报表

myReportDoc.Load(Application.StartupPath "\crdaywater.rpt ")

'将数据集ds传递给报表对象

myReportDoc.SetDataSource(ds)

'绑定报表查看器控件

CrtViewerWater.ReportSource = myReportDoc

End Sub

VB RDLC报表参数传递问题

没试过封装DLL。

提供其他的方式:rdlc文件属性,生成操作:嵌入的资源。

VB.NET的一个示例代码:

Me.reportviewer.Reset()

'这个是相对路径调用的方法Me.reportviewer.LocalReport.ReportPath

=

Application.StartupPath

".\Reports\报表名.rdlc"

'增加报表数据源

Me.reportviewer.LocalReport.DataSources.Add(New

ReportDataSource("DataSet_IntMater",

DataSet.IntMaterComplain))

'使用嵌入的资源方式调用报表

Me.reportviewer.LocalReport.ReportEmbeddedResource

=

"项目名.报表名.rdlc"

Me.reportviewer.LocalReport.DisplayName

=

"报表"

Me.reportviewer.RefreshReport()

VB RDLC报表参数传递问题

提供一种方案,使分页浏览的报表每页只显示N条记录,最后一页记录条数不足N的,用空行补齐。

示例:

记录共7条,每页显示5条记录:

下载代码(vs2008,需要安装AdventureWorks数据库)

原理:

由于表的分组包含“在起始处分页”和”在结束处分页”的功能,所以我们考虑先将数据分成若干个记录条数为N的组,

再启用“在结束处分页”的功能。

那么,如何分组呢?考虑记录的下标为 0,1,2,3... 的自然数序列,用下标除以N(设为3),得到以下数列:

0 /3 取整:0

1 /3 取整:0

2 /3 取整:0

3 /3 取整:1

4 /3 取整:1

5 /3 取整:1

6 /3 取整:2

所以,我们可以以下标除以3的商的整数值对数据进行分组,则每个分组包含3条数据。当记录条数不能被3整除时,最后一个分组会不足3。分组表达式为 =Int((RowNumber(Nothing) - 1) / N)。

另一个需要考虑的问题是,最后一个分组的记录条数可能不足N,怎样以空白行补齐它呢?考虑TableRow.Visibility.Hidden属性,可通过表达式设置它的状态。为此,我们在详细信息组内额外添加N-1行,如果检查到当前是记录的最后一组最后一条并且该组记录条数不足N时,将Hidden设为Flase;其它情况为True。

表达式为=IIf(RowNumber(Nothing) = CountRows("table1") AndAlso CountRows() = r,False,True)。其中r从1开始递增。

实现:

1.新建WinForm项目,用报表向导添加一张报表,数据源为AdventureWorksDataSet的Employee数据库表,调整详细信息(这里只选择了表内前面7条数据):

2.(以下都是在报表的设计模式中)在表内添加组,分组表达式为 =Int((RowNumber(Nothing) - 1) / 3),取消包括组头和包括组尾,勾选在结尾处分页:

3.连续插入两行:

4.选择插入的第一行(TableRow3),在Visibility的Hidden属性下选择“表达式”,在打开的文本框内填入

=IIf(RowNumber(Nothing) = CountRows("table1") AndAlso CountRows() = 1, False, True);同理,在插入的第二行(TableRow4)同位置填入

=IIf(RowNumber(Nothing) = CountRows("table1") AndAlso CountRows() = 2, False, True):

5.运行程序,可以看到前两页分别只有3条记录,最后一页1条,空白处用空行补齐了:

以MSServer自带Northwind库文件内的Customers及Orders这两个表为例,建立两个报表文件,在查询得出Customers的表数据后,点击此表内的CustomerID数据,报表将转入至下一个报表,并显示与之相关的Orders的数据,即VS中所谓的钻取式报表。

1、打开一个工程,并新建一个From,放入一个Button及一个ReportViewer控件。

2、在工程内新建一个数据源,连接到Northwind库文件,显示Customers及Orders这两个表

3、新建一个报表文件,并以表格的形式来显示数据,将Customers表内的CustomerID、CompanyName及Address三个字段放入,形成一份有表头及数据的简单报表,并将此报表保存命名为customerReport

4、再建一个报表文件,与customerReport相同,也以表格的形式来显示报表,将Orders内的OrderID、CustomerID、ShipName及OrderDate四个字段放入表格内,报表保存为orderReport

5、orderReport的数据源根据主报表customerReport的数据来确定数据源的数据,查看表格的数据集名称,我的显示为NorthwindDataSet_Orders,也可以自己另建一个,具体方法见我的《RDLC报表(二)》

6、再打开customerReport报表,将CustomerID设置成为可点击的索引字段,以便转入下一个报表。选择CustomerID字段,按鼠标右键,在”文本框属性“窗口中,选择”导航“选项卡,在下面的”超链接“中选择”跳至报表“,在报表名称中选择”orderReport“,再按下后面的”参数...“按钮,输入一个参数名称,如customerid,参数值选择=Fields!CustomerID.Value。为了与其它数据相区分,可以将此列数据根据自己的习惯改变颜色或加下划线

7、在orderReport中,设置一个报表参数,与CurtomerReprot中的名称相同,以接收父表中传入的参数

8、新建两个取得数据的方法,一个从Customers中取得数据集,另一个从Orders中取得数据集,且带参数。此两个方法可以自己编写类库来实现,也可以在VS的数据集内添加。为了演示方便,我直接使用了Customers的GetData(),并编写了一个Orders的GetDataByCustomerID(@cid)的方法。

9、在From的Button中编写如下代码:

private void button2_Click(object sender, EventArgs e)

{

NorthwindDataSet.CustomersDataTable dt1 = new NorthwindDataSetTableAdapters.CustomersTableAdapter().GetData();

this.reportViewer1.LocalReport.ReportEmbeddedResource = "TestReport.customerReport.rdlc";

this.reportViewer1.LocalReport.DataSources.Clear();

this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("NorthwindDataSet_Customers", dt1));

this.reportViewer1.RefreshReport();

}

10、使用报表的Drillthrough事件,当选择了钻取项时会发生此事件,给下一个报表取值,代码如下:

private void reportViewer1_Drillthrough(object sender, DrillthroughEventArgs e)

{

LocalReport lp = (LocalReport)e.Report;

string customerid = lp.GetParameters()["customerid"].Values[0].Trim();

lp.DataSources.Clear();

lp.DataSources.Add(new ReportDataSource("NorthwindDataSet_Orders",

new NorthwindDataSetTableAdapters.OrdersTableAdapter().GetDataByCustomerID(customerid)));

}


分享名称:vb.net报表参数 vb 报表
标题路径:http://kswjz.com/article/hgcdij.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流