To pytanie dla osób, które mają doświadczenie w CR.Raport Crystal i problem z połączeniem
Mam problem z ustawieniem połączenia z raportem Crystal. Otrzymałem raport od mojego klienta. Struktura bazy danych jest taka sama na jego i moim serwerze. Ale nazwa serwera i db jest inna. Używa "Polecenia" do tworzenia raportu (Dodaj polecenie w polach bazy danych-> Ekspert bazy danych ...). To polecenie ma jakąś funkcję zwracania danych. Próbuję uruchomić ten raport na moim komputerze i mam problem, gdy próbuję wykonać TestConnectivity(). Ta metoda zwraca false. Próbuję debugować i odkryłem, że po zastosowaniu ApplyLogOnInfo() obiekt wewnętrzny RasTable ma stare ConnectionInfo.
Używam następny kod do zestawu przyłączeniowego:
private void ApplyConnection(ReportDocument report, ConnectionInfo connectionInfo)
{
ApplyLogOnInfo(report, connectionInfo);
ApplyLogOnInfoForSubreports(report, connectionInfo);
}
private void ApplyLogOnInfo(ReportDocument reportDocument, ConnectionInfo connectionInfo)
{
foreach (Table table in reportDocument.Database.Tables)
{
table.LogOnInfo.ConnectionInfo.AllowCustomConnection = true;
TableLogOnInfo tableLogonInfo = table.LogOnInfo;
tableLogonInfo.ConnectionInfo = connectionInfo;
table.ApplyLogOnInfo(tableLogonInfo);
_log.InfoFormat("Table connection state: TableName = {0}, IsConnect = {1}", table.Name, table.TestConnectivity());
}
}
private void ApplyLogOnInfoForSubreports(ReportDocument reportDocument, ConnectionInfo connectionInfo)
{
Sections sections = reportDocument.ReportDefinition.Sections;
foreach (Section section in sections)
{
ReportObjects reportObjects = section.ReportObjects;
foreach (ReportObject reportObject in reportObjects)
{
_log.InfoFormat("Type = {0}, Name = {1}",reportObject.Name, reportObject.Kind);
if (reportObject.Kind == ReportObjectKind.SubreportObject)
{
var subreportObject = (SubreportObject)reportObject;
ReportDocument subReportDocument = subreportObject.OpenSubreport(subreportObject.SubreportName);
ApplyLogOnInfo(subReportDocument, connectionInfo);
}
}
}
}
Więc moje pytania to:
- Jak mogę skonfigurować połączenia prawo do polecenia?
- Dlaczego nie mogę zmienić połączenia? (jeśli raport został utworzony na innym serwerze).