Esta pregunta para las personas que tienen experiencia con CR.Informe de Crystal y problema con la conexión
Tengo un problema con la conexión establecida al informe de Crystal. Recibí un informe de mi cliente. La estructura de la base de datos es la misma en su servidor y en él. Pero el nombre de servidor y db es diferente. Está usando "Comando" para crear un informe (comando Agregar en campos de la Base de Datos-> Experto en Base de Datos ...). Este comando tiene alguna función para devolver datos. Intento ejecutar este informe en mi computadora y tengo un problema cuando intento ejecutar TestConnectivity(). Este método devuelve falso. Intento depurar y encontré que después de aplicar el objeto interno ApplyLogOnInfo() RasTable tiene ConnectionInfo anterior.
estoy usando el siguiente código para la conexión serie:
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);
}
}
}
}
Así que mis preguntas son:
- ¿Cómo puedo configurar la conexión derecho a mandar?
- ¿Por qué no puedo cambiar la conexión? (si el informe fue creado en otro servidor).