VS.Net中向报表模板中传递参数与公式
2008-10-10 11:34
405 查看
本文接:《直连数据库拉模式的水晶报表编程实现之极简教程 》
编辑上文之模板,增加一个参数myid,两个公式。公式xx1中是对参数myid进行操作。公式xx2内容为空,在程序中编程控制此公式。
![](http://images.cnblogs.com/cnblogs_com/babyt/2008101001-1.jpg)
![](http://images.cnblogs.com/cnblogs_com/babyt/2008101001-2.jpg)
![](http://images.cnblogs.com/cnblogs_com/babyt/2008101001-3.jpg)
全部文件代码段如下:
Imports CrystalDecisions.Shared
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Web
Partial Class _Default
Inherits System.Web.UI.Page
Private myReport As ReportDocument
Private Sub ConfigureCrystalReports()
Dim myConnectionInfo As ConnectionInfo = New ConnectionInfo()
myConnectionInfo.DatabaseName = "xxx"
myConnectionInfo.UserID = "xxx"
myConnectionInfo.Password = "xxx"
myConnectionInfo.ServerName = "xxx"
myReport = New ReportDocument()
Dim reportPath As String = Server.MapPath("crystalreport1.rpt")
'加载报表文件
myReport.Load(reportPath)
'-----------------------------------------------
'传递公式字段
'注意:公式字段在将rpt传递给crviewr控件前操作!
'需要特别注意的是:如果你的公式返回的是一个文本,必须用单引号刮起来
myReport.DataDefinition.FormulaFields("xx2").Text = "'这是一个公式'"
'传递参数
myReport.ParameterFields("myId").CurrentValues.AddValue(1001)
'-----------------------------------------------
CrystalReportViewer1.ReportSource = myReport
''-----------------------------------------------
''传递报表参数的另一种写法,将参数传递给viewer
'Dim paramFields = New ParameterFields()
'Dim paramField = New ParameterField()
'Dim discreteVal = New ParameterDiscreteValue()
''定位参数
'paramField.ParameterFieldName = "myId"
''定义参数值
'discreteVal.Value = 101
''赋值
'paramField.CurrentValues.Add(discreteVal)
'paramFields.Add(paramField)
'CrystalReportViewer1.ParameterFieldInfo = paramFields
''-----------------------------------------------
SetDBLogonForReport(myConnectionInfo, myReport)
End Sub
Private Sub SetDBLogonForReport(ByVal myConnectionInfo As ConnectionInfo, ByVal myReportDocument As ReportDocument)
Dim myTables As Tables = myReportDocument.Database.Tables
For Each myTable As CrystalDecisions.CrystalReports.Engine.Table In myTables
Dim myTableLogonInfo As TableLogOnInfo = myTable.LogOnInfo
myTableLogonInfo.ConnectionInfo = myConnectionInfo
myTable.ApplyLogOnInfo(myTableLogonInfo)
Next
End Sub
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
ConfigureCrystalReports()
End Sub
End Class
效果如下:
编辑上文之模板,增加一个参数myid,两个公式。公式xx1中是对参数myid进行操作。公式xx2内容为空,在程序中编程控制此公式。
![](http://images.cnblogs.com/cnblogs_com/babyt/2008101001-1.jpg)
![](http://images.cnblogs.com/cnblogs_com/babyt/2008101001-2.jpg)
![](http://images.cnblogs.com/cnblogs_com/babyt/2008101001-3.jpg)
全部文件代码段如下:
Imports CrystalDecisions.Shared
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Web
Partial Class _Default
Inherits System.Web.UI.Page
Private myReport As ReportDocument
Private Sub ConfigureCrystalReports()
Dim myConnectionInfo As ConnectionInfo = New ConnectionInfo()
myConnectionInfo.DatabaseName = "xxx"
myConnectionInfo.UserID = "xxx"
myConnectionInfo.Password = "xxx"
myConnectionInfo.ServerName = "xxx"
myReport = New ReportDocument()
Dim reportPath As String = Server.MapPath("crystalreport1.rpt")
'加载报表文件
myReport.Load(reportPath)
'-----------------------------------------------
'传递公式字段
'注意:公式字段在将rpt传递给crviewr控件前操作!
'需要特别注意的是:如果你的公式返回的是一个文本,必须用单引号刮起来
myReport.DataDefinition.FormulaFields("xx2").Text = "'这是一个公式'"
'传递参数
myReport.ParameterFields("myId").CurrentValues.AddValue(1001)
'-----------------------------------------------
CrystalReportViewer1.ReportSource = myReport
''-----------------------------------------------
''传递报表参数的另一种写法,将参数传递给viewer
'Dim paramFields = New ParameterFields()
'Dim paramField = New ParameterField()
'Dim discreteVal = New ParameterDiscreteValue()
''定位参数
'paramField.ParameterFieldName = "myId"
''定义参数值
'discreteVal.Value = 101
''赋值
'paramField.CurrentValues.Add(discreteVal)
'paramFields.Add(paramField)
'CrystalReportViewer1.ParameterFieldInfo = paramFields
''-----------------------------------------------
SetDBLogonForReport(myConnectionInfo, myReport)
End Sub
Private Sub SetDBLogonForReport(ByVal myConnectionInfo As ConnectionInfo, ByVal myReportDocument As ReportDocument)
Dim myTables As Tables = myReportDocument.Database.Tables
For Each myTable As CrystalDecisions.CrystalReports.Engine.Table In myTables
Dim myTableLogonInfo As TableLogOnInfo = myTable.LogOnInfo
myTableLogonInfo.ConnectionInfo = myConnectionInfo
myTable.ApplyLogOnInfo(myTableLogonInfo)
Next
End Sub
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
ConfigureCrystalReports()
End Sub
End Class
效果如下:
![](http://images.cnblogs.com/cnblogs_com/babyt/2008101001-4.jpg)
相关文章推荐
- VS.Net中向报表模板中传递参数与公式
- VS.Net中向报表模板中传递参数与公式
- 使用VS.NET向水晶报表中的存储过程传递参数
- 水晶报表传递参数及使用公式参数
- C#给水晶报表模板传递多个自定义参数字段类模块
- 水晶报表传递参数及使用公式参数
- Asp.net ReportViewer 为RDLC报表 传递参数
- FastReport.Net传递报表参数
- 将参数传递给ASP.NET Core 2.0中的中间件
- Asp.net Mvc Codeplex Preview 5 第三篇 实现Action参数传递繁杂类型
- VS2005的一个小问题,我编写了一个min函数,使用模板,传递的参数没有智能提示
- Net线程足迹 传递参数至线程
- C 可变长参数 VS C++11 可变长模板
- .net页面间的参数传递多种方法
- vs.net 新建网站,却没有空网站,asp.net网站默认模板的问题!
- Silverlight Xap和Html Asp.net参数传递
- 设置报表,传递参数
- 完成了对水晶报表中的参数传递的学习
- Asp.net页面之间传递参数的几种方法
- c++ 模板--解决继承类参数传递