想問各位大蝦,我使用crystalreportviewer控件顯示水晶報表,在runtime中傳遞了參數和登錄數據庫的帳號和密碼(參數,帳號,密碼都正確,無須懷疑),但顯示后仍然提示要輸入參數和登錄的帳號和密碼,這是怎麼回事?以下是Page_Load代碼,速求解決方法,先謝了!!! if (!Page.IsPostBack)
{ CrystalReportViewer1.ReportSource = @"D:\my document\rpt00012.rpt"; CrystalDecisions.Shared.TableLogOnInfo newlogon = new CrystalDecisions.Shared.TableLogOnInfo();
newlogon.ConnectionInfo.UserID = "system";

newlogon.ConnectionInfo.Password = "manager"; CrystalReportViewer1.LogOnInfo.Add(newlogon);

CrystalDecisions.Shared.ParameterRangeValue rangeVal = new ParameterRangeValue();

ParameterFields paramFields = new ParameterFields ();
ParameterField paramField = new ParameterField ();

paramField = new ParameterField();
paramField.ParameterFieldName = "Vdate";
DateTime starttime = new DateTime(2005,5,1);
DateTime endtime = new DateTime(2006,6,1);
rangeVal.StartValue=starttime.Date;
rangeVal.EndValue=endtime.Date;
//rangeVal.StartValue="2005/1/1";
//rangeVal.EndValue = "2006/6/1"; paramField.CurrentValues.Add(rangeVal);
CrystalReportViewer1.ParameterFieldInfo.Add (paramField); paramField.ParameterFieldName = "Vender";
ParameterDiscreteValue discreteVal = new ParameterDiscreteValue ();
discreteVal.Value = "M00072";
paramField.CurrentValues.Add(discreteVal);
//paramFields.Add(paramField);
CrystalReportViewer1.ParameterFieldInfo.Add (paramField);
paramField = new ParameterField();
paramField.ParameterFieldName = "Passwd";
discreteVal = new ParameterDiscreteValue();
discreteVal.Value = "5851";
paramField.CurrentValues.Add(discreteVal);
//paramFields.Add(paramField);
CrystalReportViewer1.ParameterFieldInfo.Add (paramField); //paramFields.Add(paramField);
//CrystalReportViewer1.ParameterFieldInfo = paramFields;
CrystalReportViewer1.RefreshReport();

}

解决方案 »

  1.   

    我遇到过这种情况。
    建水晶报表文件时,我用到的数据库是NPPFS。
    在程序中我用到的数据库是PPFS
    这时就会提示登錄的帳號和密碼
      

  2.   

    项目数据”里面的”当前连接”显示的就是OLE DB(ADO)的连接,这样就可以将表添加到右边的”选定的表”中了(切记:不要既从”OLE DB” 中选表或命令又从”当前连接”中选,如果你用了数据集,也是一样的道理,否则全提示出”登陆失败”的错误!)
      

  3.   

    你到图表区那里去有很多....
    加登陆信息即可.
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Data.SqlClient;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using CrystalDecisions.Shared;
    using CrystalDecisions.CrystalReports.Engine;namespace leeto
    {
    /// <summary>
    /// owc 的摘要说明。
    /// </summary>
    public class owc : System.Web.UI.Page
    {
    protected CrystalDecisions.Web.CrystalReportViewer rptv;
    ReportDocument rd = new ReportDocument();

    private void Page_Load(object sender, System.EventArgs e)
    {
    TableLogOnInfo log = new TableLogOnInfo();
    log.ConnectionInfo.ServerName = "XX.XX.XX.XX";
    log.ConnectionInfo.DatabaseName = "XX";
    log.ConnectionInfo.UserID = "XXX";
    log.ConnectionInfo.Password = "XXX";
    ReportDocument rd = new ReportDocument();
    string RptPath = null;
       
    RptPath =Server.MapPath("rpt.rpt");
    rd.Load(RptPath);
    rd.Database.Tables[0].ApplyLogOnInfo(log); this.rptv.ReportSource = rd; this .rptv.DataBind();
    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion
    }
    }
      

  4.   

    对于asp.net一般是先创建一个数据集,这个数据集和你要查看的数据表或视图或查询结果一样,然后利用这个数据集创建一个水晶报表。最后利用crystalReportViewer查看时,利用ReportDocument对象,加载刚才创建的水晶报表,并通过ADO.net,将要查看的数据填充到一个DataSet中,然后绑定就行了。
      

  5.   

    我是調用原有的報表,是用oracle數據庫的