VS.Net中向报表模板中传递参数与公式

本文接:《直连数据库拉模式的水晶报表编程实现之极简教程

编辑上文之模板,增加一个参数myid,两个公式。公式xx1中是对参数myid进行操作。公式xx2内容为空,在程序中编程控制此公式。

VS.Net中向报表模板中传递参数与公式

VS.Net中向报表模板中传递参数与公式

 

VS.Net中向报表模板中传递参数与公式

全部文件代码段如下:

 

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

 

 效果如下:
VS.Net中向报表模板中传递参数与公式 

你可能感兴趣的:(.net)