2013-01-25 125 views
0

我有一些客户需要链接到我们正在创建的ASP.NET应用程序的Crystal Reports。我有以下代码:Crystal Report Viewer - 登录提示

LINQDataContext dc = new LINQDataContext(); 
     Order o = dc.Orders.Where(a => a.ID == long.Parse(Request.QueryString["OrderID"])).Single(); 
     SqlConnectionStringBuilder bld = new SqlConnectionStringBuilder(dc.Connection.ConnectionString); 
     CrystalReportSource src = new CrystalReportSource(); 
     src.ID = "test"; 
     ConnectionInfo myConnectionInfo = new ConnectionInfo(); 

     myConnectionInfo.ServerName = bld.DataSource; 
     myConnectionInfo.DatabaseName = bld.InitialCatalog; 
     myConnectionInfo.UserID = bld.UserID; 
     myConnectionInfo.Password = bld.Password; 

     src.Report.FileName = o.SalesPersonObject.GetType().GetProperty(Request.QueryString["DeliveryNoteType"]).GetValue(o.SalesPersonObject, null).ToString(); 


     ParameterDiscreteValue param = new ParameterDiscreteValue(); 
     param.Value = long.Parse(Request.QueryString["OrderID"]); 
     src.ReportDocument.ParameterFields[0].CurrentValues.Add(param); 

     CrystalReportViewer vw = new CrystalReportViewer(); 
     src.ReportDocument.SetDatabaseLogon(bld.UserID, bld.Password); 
     vw.HasToggleGroupTreeButton = false; 
     vw.AutoDataBind = true; 
     vw.Height = 1268; 
     vw.Width = 1000; 
     vw.HasPrintButton = true; 
     vw.PrintMode = PrintMode.Pdf; 
     vw.ReportSource = src; 
     //vw.EnableDatabaseLogonPrompt = false; 
     vw.HasToggleParameterPanelButton = false; 
     vw.HasCrystalLogo = false; 
     vw.RefreshReport(); 
     plcReport.Controls.Add(vw); 

然而,即使我用SetDatabaseLogon方法设置用户名/密码,我还得到一个提示输入数据库的登录信息,或者更具体地进入密码。我试过使用vw.EnableDatabaseLogonPrompt = true,但那给了我一个数据库登录问题。

任何想法?

回答

0

看看我如何帮助另一个SO用户谁正面临类似的问题。我希望你能够得到一些有价值的东西。

Reference

0

为了您的连接,请使用OLE驱动程序;不要使用本机SQL驱动程序。不知道这是否是您目前的问题,但我的经验是,如果我使用本机驱动程序,它在开发中可以正常工作,但总是会提示您在生产中进行登录。

0

你可以试试下面的代码:

using CrystalDecisions; 
using CrystalDecisions.CrystalReports; 
using CrystalDecisions.CrystalReports.Engine; 
using CrystalDecisions.Shared; 


public partial class ClientsByOpeningDate : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      ReportDocument rpt = new ReportDocument(); 
      rpt.Load(Server.MapPath("ClientsByOpenDate.rpt")); 
      rpt.SetDatabaseLogon("myUserLogin", "mypassword", @"Server", "Database"); 
      CrystalReportViewer1.ReportSource = rpt; 
     } 
    } 
} 
+0

这是更好地提供意见,不仅是代码。 – ekostadinov