0

作成しているASP.NETアプリケーションにリンクする必要があるCrystalReportsが顧客から届いています。私は次のコードを持っています:

 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を使用してみましたが、データベースログインの問題が発生します。

何か案は?

4

3 に答える 3

0

接続には、OLEドライバーを使用します。ネイティブSQLドライバーを使用しないでください。それが現在の問題かどうかはわかりませんが、私の経験では、ネイティブドライバーを使用すると、開発では問題なく動作しますが、本番環境では常にログインを求められます。

于 2013-01-25T10:11:20.117 に答える
0

同様の問題に直面していた別のSO ユーザーを私がどのように助けたかをご覧ください。

参照

于 2013-01-25T15:06:22.960 に答える
0

You can try the the following code:

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;
        }
    }
}
于 2014-09-29T07:30:09.410 に答える