private void Page_Load(object sender, System.EventArgs e)
{
  try
  {
    TableLogOnInfo logOnInfo = new TableLogOnInfo ();    ReportDocument oRpt = new ReportDocument();    string path;
    path=Server.MapPath (@".\CrystalReport1.rpt");
    oRpt.Load (path);    string a,b,c,d;    a=System.Configuration.ConfigurationSettings.AppSettings ["servername"];

    b=System.Configuration.ConfigurationSettings.AppSettings ["database"];

    c=System.Configuration.ConfigurationSettings.AppSettings ["userid"];

    d=System.Configuration.ConfigurationSettings.AppSettings ["pass"];

    logOnInfo.ConnectionInfo.ServerName = a;
    logOnInfo.ConnectionInfo.DatabaseName = b;
    logOnInfo.ConnectionInfo.UserID = c;
    logOnInfo.ConnectionInfo.Password = d;
    oRpt.Database.Tables [0].ApplyLogOnInfo (logOnInfo);
    CrystalReportViewer1.ReportSource = oRpt;
    DataBind();
  }
  catch(CrystalDecisions.CrystalReports.Engine.LogOnException ex)
  {

  }
}
Web.config
 <appSettings>
<add key="servername" value="TWWORKSERVER" />
<add key="database" value="Northwind" />
<add key="userid" value="sa" />
<add key="pass" value="sa" />
 </appSettings>index.aspx
<%@ Page language="c#" Codebehind="index.aspx.cs" AutoEventWireup="false" Inherits="web.WebForm1" %>
<%@ Register TagPrefix="cr" Namespace="CrystalDecisions.Web" Assembly="CrystalDecisions.Web, Version=9.1.5000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<CR:CrystalReportViewer id="CrystalReportViewer1" runat="server" Width="1001px" Height="1140px" ReportSource='<%# "C:\\Documents and Settings\\Administrator\\桌面\\test\\web\\CrystalReport1.rpt" %>'>
</CR:CrystalReportViewer>
</FONT>
</form>
</body>
</HTML>

解决方案 »

  1.   

    解救你来了
    rptDoc.SetDatabaseLogon("sa","sa","serverName","dateBase");
    这样还不行就来硬的。
    login(rptDoc)
        protected void Login(CrystalDecisions.CrystalReports.Engine.ReportDocument report)
        {        string userId = "sa";
            string passWord = "sa";
            //Set Database Logon to main report
            foreach (CrystalDecisions.Shared.IConnectionInfo connection in report.DataSourceConnections)
            {
                connection.SetLogon(userId, passWord);
            }        //Set Database Logon to subreport
            foreach (CrystalDecisions.CrystalReports.Engine.ReportDocument subreport in report.Subreports)
            {
                foreach (CrystalDecisions.Shared.IConnectionInfo connection in subreport.DataSourceConnections)
                {
                    connection.SetLogon(userId, passWord);
                }
            }
        }