1

Crystal レポートを含むフォームを開くたびに、常にユーザー名とパスワードを要求されますが、Web アプリケーションでユーザー名とパスワードを使用しませんでした。web.config で統合セキュリティを使用しています。この問題を解決するにはどうすればよいですか?

これはコードです:

            using System;
            using System.Collections.Generic;
            using System.Linq;
            using System.Web;
            using System.Web.UI;
            using System.Web.UI.WebControls;
            // FOR CRYSTAL REPORT
            using CrystalDecisions.CrystalReports.Engine;
            using CrystalDecisions.Shared;
            using System.Data;
            using System.Configuration;

            // FOR SQL CONNECTION
            using System.Data.Sql;
            using System.Data.SqlClient;
            using MediCard_Cooperative.App_Data;

            namespace MediCard_Cooperative.MediCard_Cooperative.Reports
            {
                public partial class rptTest : System.Web.UI.Page
                {
                    private SqlConnection connSQL;

                    protected void Page_Load(object sender, EventArgs e)
                    {
                        ReportDocument rptDoc = new ReportDocument();
                        dsMembers ds = new dsMembers();                     // .xsd or dataset filename
                        DataTable dt = new DataTable();

                        // Set the name of data table
                        dt.TableName = "Crystal Report Members";
                        dt = getAllData();                                  // calling 'getAllMembers' function
                        ds.Tables[0].Merge(dt);

                        // .rpt file path "../Reports/SimpleReports.rpt"
                        rptDoc.Load(Server.MapPath("../Reports/CrystalReports/ctrSample.rpt"));

                        //set dataset to the report viewer
                        rptDoc.SetDataSource(ds);
                        ctrViewerTest.ReportSource = rptDoc;
                    }

                    public DataTable getAllData()
                    {
                        try
                        {
                            using (connSQL = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["connstring"].ToString()))
                            {
                                using (SqlCommand cmd = new SqlCommand("usp_Test", connSQL))
                                {
                                    cmd.CommandType = CommandType.StoredProcedure;

                                    connSQL.Open();
                                    cmd.ExecuteNonQuery();

                                    using (SqlDataAdapter da = new SqlDataAdapter(cmd))
                                    {
                                        DataSet ds = new DataSet();

                                        da.Fill(ds, "dtTest");

                                        return ds.Tables[0];
                                    }

                                }

                            }

                        }
                        catch (Exception ex)
                        {
                            throw new Exception(ex.Message);
                        }
                    }
                }
            }
4

7 に答える 7

3

オブジェクトを通じてデータベースのユーザー名とパスワードを指定する必要がありReportDocumentます。

rptDoc.SetDatabaseLogon(username, password);
于 2012-12-05T07:35:05.800 に答える
1

コードを介してサーバーのクレデンシャルを渡す必要があります

rptDoc.SetDatabaseLogon(yourDatabaseServerUsername, yourDatabaseServerPassword);

何かのようなもの

rptDoc.SetDatabaseLogon("sa", "123");
于 2012-12-05T07:52:40.630 に答える
1

データセットが見つからないか、レポートの設計に使用されたデータセットが渡されたデータセットと異なる場合、CrystalReportはログインする必要があると想定しています。

あなたはあなたのspにパラメータを渡していないので、私はクリスタルレポートにそれらを直接管理させる方が良いと思います。維持するコードが少なくなります。

于 2012-12-05T07:30:46.847 に答える
1

使用しているC#またはVBでCrystal Reportを開き、フィールドエクスプローラーに移動して、次のようなデータベースフィールドを右クリックします ここに画像の説明を入力

そして、Set Datasources Location... を選択します。

新しいウィンドウが開きます... プロパティを展開します。

ここに画像の説明を入力

次に、統合されたセキュリティを見つけます。デフォルトでは False になります。True に変更します。

お気に入り

ここに画像の説明を入力

于 2016-01-23T20:23:33.610 に答える
0

Dim myreport As New PurchaseInvoiceTest 'Crystal Reports は、以下の行で問題が解決されるたびに認証を求めます myreport.SetDatabaseLogon("sa", "abcdef@12345")

于 2020-01-06T10:32:49.880 に答える