Dynamicznie ustawiony Crystal Report nadal prosi o login db
Próbuję wdrożyćCrystal Reports
w moimMVC
podanie. Aby w pełni korzystać z przeglądarki Crystal Report Viewer, muszę użyć awebform
, który działa dość dobrze w moim środowisku dev.
Aplikacja zostanie wdrożona na serwerach użytkownika i połączy się z ich osobistymi dbs. Oznacza to, że nie mam ostatecznych informacji o połączeniu podczas projektowania raportu lub aplikacji.
Jestem w stanie pomyślnie nawiązać połączenie przy użyciu ich wpisów w pliku web.config, załadowaćDataTable
z informacją o raporcie i przekaż ją do raportu. Jednak raport nadal pyta o dane uwierzytelniające db. Raport jest ustawiony na połączenie z moją bazą danych, więc prosi o podanie moich danych uwierzytelniających i nie będzie kontynuował bez nich. Jednak raport końcowy pokazuje prawidłowe informacje z ich bazy danych.
Nie jestem pewien, czy muszę coś zmienić w raporcie, czy w kodzie z tyłu. W ten sposób ustalam raportReportSource
teraz:
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>");
}
}
Jak zapobiec żądaniu przez raport oryginalnych danych uwierzytelniających?
EDYTOWAĆ:
Jeśli podam login do mojej bazy danych w ten sposób:
rd.SetDatabaseLogon("username", "password");
Nie otrzymuję ponownie logowania do bazy danych. Poświadczenia muszą być dla bazy danych używanej do utworzenia raportu, ale wyświetlane wyniki pochodzą zDataTable
wypełnione w powyższej metodzie. Jeśli ma dane potrzebne z bieżącej bazy danych, dlaczego musi połączyć się z oryginalną bazą danych?
EDIT2:
Mam 2 źródła danych dla tego raportu. Jedna to tabela z bazy danych, a druga to wynik procedury składowanej. Nauczyłem się teraz, że jest to przyczyna dodatkowego logowania.