每当我打开有水晶报表的表单时,它总是要求输入用户名和密码,但我甚至没有在我的网络应用程序中使用用户名和密码。我在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);
}
}
}
}
答案 0 :(得分:2)
您必须通过ReportDocument
对象提及数据库用户名和密码。
rptDoc.SetDatabaseLogon(username, password);
答案 1 :(得分:1)
您需要通过代码
传递服务器凭据rptDoc.SetDatabaseLogon(yourDatabaseServerUsername, yourDatabaseServerPassword);
类似
rptDoc.SetDatabaseLogon("sa", "123");
答案 2 :(得分:1)
使用C#或VB打开水晶报告 然后 去 Field Explorer 并右键单击数据库字段 喜欢
选择设置数据源位置...
新窗口将打开... 展开属性。
然后找到集成的安全性 默认情况下它将为False将其更改为True
像
答案 3 :(得分:0)
无法找到数据集,或者用于设计报表的数据集与传递的数据集不同,Crystal报表假设您需要登录。
因为你没有将参数传递给你的sp,我认为最好直接让crystal report管理它们。维护较少的代码。
答案 4 :(得分:0)
Dim myreport As New PurchaseInvoiceTest
“ Crystal Reports每次通过以下行解决问题时均要求进行身份验证
myreport.SetDatabaseLogon("sa", "abcdef@12345")
答案 5 :(得分:0)
请务必在 Crystal 中设置您的数据源位置:
答案 6 :(得分:-1)
rpt.SetDatabaseLogon("sureguide_admin", "ejaz661")
工作正常