读书人

crystalReport参数怎么传入200分求

发布时间: 2011-12-30 23:30:45 作者: rapoo

crystalReport参数如何传入,在线等,200分求。
我在VS2005新建一网站(ASP.NET)项目
加入一个web窗体,在窗体上加入一个crystalReportViewr,并指定为一个本机上的a.rpt文件
a.rpt报表是调用SQL2000中的一个存储过程PoChange
存储过程PoChange有参数三个(@StartNo,@EndNo,@PoDate)
我在窗体上用三个文件框textbox1,textbox2,textbox3,分别对存储过程的三个参数
希望将三个参数传到报表上,并显示在网页上

请问,如何写这些代码?TKS!


[解决办法]
ReportDocument.SetParameterValue(string,object)

好像是这么写的
[解决办法]
首先你的存储过程必须是以Select语句结尾返回数据集的。像这样:

Create procedure PoChange(@StartNo int ,,@EndNo int,@PoDate datetime)
As
set nocount on
select * from table1
where No> =@StartNo and No <=@EndNo and PoDate <=@PoDate
go

然后在Page_Load 事件中写:
ReportDocument theReport=new ReportDocument();
theReport.Load (reportPath);
CrystalDecisions.Shared.ConnectionInfo conn= new ConnectionInfo() ;
CrystalDecisions.CrystalReports.Engine.Table myTable;
CrystalDecisions.Shared.TableLogOnInfo myLog;
conn.ServerName = "(local) ";
conn.DatabaseName =你的数据库名;
conn.UserID = "sa ";
conn.Password = " ";
String paramName,paramValue;
CrystalDecisions.Shared.ParameterValues pList = new ParameterValues();
CrystalDecisions.Shared.ParameterDiscreteValue pV=new ParameterDiscreteValue ();
for( int i=0;i <theReport.DataDefinition.ParameterFields.Count;i++)
{
paramName=theReport.DataDefinition.ParameterFields[i].Name;
paramValue=Request.QueryString.Get(paramName);
pV.Value =paramValue;
pList.Add(pV);theReport.DataDefinition.ParameterFields[paramName].ApplyCurrentValues(pList);
}


[解决办法]
按照VB的格式写就行了,道理一样
[解决办法]
Imports CrystalDecisions.CrystalReports.Engine

假设报表有一个名为to_Name1的TextObject,现在动态给to_Name1赋值

eg.
Dim _rpYield As New rpYield '报表为:rpYield

Dim rpName1 As TextObject
rpName1 = _rpYield.ReportDefinition.ReportObjects.Item( "to_Name1 ")

rpName1.Text = "你所想赋的值 "


[解决办法]
http://community.csdn.net/Expert/topic/5545/5545716.xml?temp=.9418146
[解决办法]
我在vb.net中的做法是:
先是数据集调用存储过程,再给水晶报表设置数据源显示,不知道有没有别的方法,学习中。

Public Class frmRpt

Dim ds As MyDBDataSet
Dim showTableName As String

Private Sub frmRpt_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
If showTableName.Equals( "ByName ") Then
Dim rpt As New crByName
rpt.SetDataSource(ds)
Me.crv.ReportSource = rpt
Else
Dim rpt As New crByTime
rpt.SetDataSource(ds)
Me.crv.ReportSource = rpt
End If
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "rpt ")
End Try
End Sub

Public Sub New(ByVal dsIn As MyDBDataSet, ByVal strIn As String)

' 此调用是 Windows 窗体设计器所必需的。
InitializeComponent()

' 在 InitializeComponent() 调用之后添加任何初始化。
ds = dsIn
showTableName = strIn
End Sub
End Class

读书人网 >VB Dotnet

热点推荐