MVC
응용 프로그램에 Crystal Reports
을 배포하려고합니다. Crystal Report Viewer를 최대한 활용하려면 내 dev 환경에서 상당히 잘 작동하는 webform
을 사용해야합니다.동적으로 설정된 Crystal Report가 여전히 db 로그인을 묻습니다.
응용 프로그램이 사용자의 서버에 배포되고 개인 dbs에 연결됩니다. 즉, 보고서 또는 응용 프로그램을 디자인 할 때 최종 연결 정보가 없습니다.
web.config 파일에서 해당 항목을 사용하여 성공적으로 연결할 수 있습니다. DataTable
에 보고서 정보를로드하고 보고서에 전달하십시오. 그러나 보고서는 여전히 db 자격 증명을 요구합니다. 이 보고서는 내 데이터베이스에 연결되도록 설정되어 있으므로 내 자격 증명을 묻습니다.이 자격 증명 없이는 진행하지 않습니다. 그러나 최종 보고서는 db에서 올바른 정보를 보여줍니다.
보고서 또는 코드 뒤에서 변경할 필요가 있는지 확실하지 않습니다.
protected void Page_Load(object sender, EventArgs e)
{
string strReportName = System.Web.HttpContext.Current.Session["ReportName"].ToString();
try
{
ReportDocument rd = new ReportDocument();
string strRptPath = Server.MapPath("~/") + "Rpts//" + strReportName;
rd.Load(strRptPath);
SqlParameter[] sqlParams = {};
DataTable testDt = DBHelper.GetTable("rptInvtDuplDesc", sqlParams);
rd.DataSourceConnections.Clear();
rd.SetDataSource(testDt);
CrystalReportViewer1.ReportSource = rd;
}
else
{
Response.Write("<H2>Nothing Found; No Report name found</H2>");
}
}
어떻게 원래의 자격 증명을 요청에서 보고서를 방지 할 : 지금 보고서 ReportSource
을 설정하고 방법이 무엇입니까?
편집 :
나는 이런 내 DB에 로그인 전달하는 경우 :
rd.SetDatabaseLogon("username", "password");
을 내가 다시 DB 로그인을하지 않습니다. 자격 증명은 보고서를 만드는 데 사용되는 db에 대한 것이어야하지만 표시된 결과는 위의 방법으로 채워진 DataTable
에 있습니다. 현재 데이터베이스에서 필요로하는 데이터가 있다면 왜 원래 데이터베이스에 연결해야합니까?
EDIT2 :
나는이 보고서의 2 데이터 소스를 가지고있다. 하나는 db의 테이블이고 다른 하나는 저장 프로 시저의 결과입니다. 나는 이것이 추가 로그인의 원인임을 알게되었습니다.
나는 것을 내가 가지고있는 또 다른 'CR'문제를 위해 이것을 시도해야한다. 이 질문에 대해서는 이미 보고서에서 원하는 데이터를 얻기 위해'C# '을 사용했습니다. 왜 다시 db에 로그인해야합니까?내 경험상, 'CR'은 큰 데이터를 처리하는 데 그리 좋지 않으며 오히려 더 나은 도구를 사용하려고합니다. 보고서를 단순히 프레젠테이션으로 사용하고 데이터 수집이나 처리를 위해 사용할 수 없기를 바랍니다. – davids
나는 보고서에 데이터를 제공하는 두 개의 테이블이 있다는 점을 배웠다. 이제 각각 (rd.Database.Tables [0] .SetDataSource (testDt);)을 사용하여 데이터 소스를 설정할 수 있지만 테이블 이름은 스왑 된 것처럼 보입니다. SetDataSource를 사용하여 테이블 이름을 어떻게 강제로 만드나요? 어떤 아이디어? – davids