Crystal报告询问用户名和密码

时间:2012-12-05 07:26:32

标签: c# asp.net crystal-reports-2010

每当我打开有水晶报表的表单时,它总是要求输入用户名和密码,但我甚至没有在我的网络应用程序中使用用户名和密码。我在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);
                        }
                    }
                }
            }

7 个答案:

答案 0 :(得分:2)

您必须通过ReportDocument对象提及数据库用户名和密码。

rptDoc.SetDatabaseLogon(username, password);

答案 1 :(得分:1)

您需要通过代码

传递服务器凭据
rptDoc.SetDatabaseLogon(yourDatabaseServerUsername, yourDatabaseServerPassword);

类似

rptDoc.SetDatabaseLogon("sa", "123");

答案 2 :(得分:1)

使用C#或VB打开水晶报告 然后 去 Field Explorer 并右键单击数据库字段 喜欢 enter image description here

选择设置数据源位置...

新窗口将打开... 展开属性。

enter image description here

然后找到集成的安全性 默认情况下它将为False将其更改为True

enter image description here

答案 3 :(得分:0)

无法找到数据集,或者用于设计报表的数据集与传递的数据集不同,Crystal报表假设您需要登录。

因为你没有将参数传递给你的sp,我认为最好直接让crystal report管理它们。维护较少的代码。

答案 4 :(得分:0)

Dim myreport As New PurchaseInvoiceTest “ Crystal Reports每次通过以下行解决问题时均要求进行身份验证 myreport.SetDatabaseLogon("sa", "abcdef@12345")

答案 5 :(得分:0)

请务必在 Crystal 中设置您的数据源位置:

  1. 使用 OLEDB (ADO) 时,设置。
  2. 选择“Microsoft OLE DB Provider for SQL Server”

Set Datasource Location Image

答案 6 :(得分:-1)

rpt.SetDatabaseLogon("sureguide_admin", "ejaz661")

工作正常