4,816
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Data;
using System.Data.OracleClient;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
namespace ErpPrintService
{
public partial class ErpExtReport : System.Web.UI.Page
{
string rptParth = "", resultKey = "", parameters="";
protected void Page_Load(object sender, EventArgs e)
{
loadRptInfo();
}
private void loadRptInfo()
{
resultKey = Request.QueryString["ResultKey"];
if (resultKey != null)
{
string strSQL = @"SELECT PARAMETERS,FILE_NAME FROM DJ_QUICK_REPORT_ANALYSE_JOIN WHERE QUERY_NO=:ResultKey";
OracleDataReader odr = OracleHelper.ExecuteReader(CommandType.Text, strSQL, new OracleParameter(":ResultKey", resultKey));
if (odr.Read())
{
parameters = odr["parameters"].ToString();
rptParth = odr["file_name"].ToString();
}
odr.Close();
loadPullRpt(rptParth, parameters);
}
}
private void loadPullRpt(string rptParth, string parameters)
{
// crs.ReportDocument.Load(Server.MapPath(rptParth));
crs.ReportDocument.Load(@"\\192.168.0.62\CrystalRpt\材料发料.rpt");//绝对路径
Utility.SystemSet.SetDBLogonForReport(crs.ReportDocument);
crv.ReportSource = crs;
this.crv.ParameterFieldInfo = GetParameterField(parameters);
crv.DataBind();
}
//参数
private ParameterFields GetParameterField(string parameters)
{
ParameterFields pfs = new ParameterFields();
string parameter = parameters;
string paraNameAndValue = "", paraName = "", paraValue = "";
while (parameter.IndexOf("^") > 0)
{
paraNameAndValue = parameter.Substring(0, parameter.IndexOf("^"));
paraName = paraNameAndValue.Substring(0, paraNameAndValue.IndexOf("="));
paraValue = paraNameAndValue.Substring(paraNameAndValue.IndexOf("=") + 1);
parameter = parameter.Substring(parameter.IndexOf("^") + 1);
pfs.Add(this.CreateParameterField(paraName, paraValue));
}
return pfs;
}
private ParameterField CreateParameterField(string FieldName, object FieldValue)
{
ParameterField field = new ParameterField();
ParameterDiscreteValue pvalue = new ParameterDiscreteValue();
pvalue.Value = FieldValue;
field.Name = FieldName;
field.CurrentValues.Add(pvalue);
//返回参数字段
return field;
}
}
}