Hola y gracias por tu tiempo.
Como se solicitó, a continuación encontrarás información adicional solicitada (códigos para cada paso que produce error).
- Sí, utilizando (OLE DB) SQL Native Client v11
-
Diseñador de VS:
+ al "verificar base de datos" o "obtener una vista previa" del informe:
"Eliminar tabla" "Tabla de base de datos "xxx" no encontrada. Continuar eliminando esta tabla del informe"
(luego muestra los resultados del informe ...)
+ al intentar "re-mapear" tablas de un SQL Server 2012 Express LocalDB a otro:
"No se puede abrir o acceder al objeto de datos"
(traducido de "Impossible d'ouvrir l'objet de données ou d'y accéder") y luego
"Error de conector de base de datos desconocido"
(traducido de "Erreur Database Connector inconnue"). Estos dos mensajes de error se repiten para cada tabla contenida en el informe
-
Aplicación en ejecución (.NET 4.0, 32 o 64 bits)
Hecho con las librerías de SAP CR de VS2013 en modo Debug del proyecto de VS.
Tengo el mismo problema al ejecutar en otra computadora que solo tiene el tiempo de ejecución SP10.
Ambos pueden ejecutar consultas desde c# en la base de datos.
+ sin ningún cambio en la configuración del informe:
"Tabla "xxx" no encontrada. Error en el archivo xxxx{53312761-372A-42CB-882B-D9C4A1695350}.rpt. No se puede encontrar la tabla."
+ al intentar cambiar la base de datos configurada desde el informe:
"No se puede iniciar la conexión. Detalles: [Código del proveedor de base de datos: 18456], No se puede iniciar la conexión. Detalles: [Código del proveedor de base de datos: 4060], No se puede iniciar la conexión xxxx{4D826462-CD30-44FD-8E2B-629F69F60596}.rpt. Detalles: [Código del proveedor de base de datos: 18456]"
=> 18456 se refiere a un inicio de sesión incorrecto. Actualmente uso la conexión de seguridad integrada, reporto los parámetros de sqldatabase de .net desde la aplicación existente/conectada ConnectionString.
>>> Para referencia, aquí está lo que se hace en el código para cambiar la base de datos configurada:
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(GpmiDb.ConnectionString);
CrystalDecisions.Shared.ConnectionInfo ci = new CrystalDecisions.Shared.ConnectionInfo();
ci.ServerName = builder.DataSource; // = (LocalDB)\v11.0
ci.DatabaseName = builder.AttachDBFilename; // = D:\TEST\TEST.MDF
ci.IntegratedSecurity = builder.IntegratedSecurity; // = true
ci.UserID = builder.UserID; // = ""
ci.Password = builder.Password; // = ""
ci.Type = ConnectionInfoType.SQL; // También he intentado con "CRQE" (lo que se usa dentro del informe antes de la modificación) pero tengo el mismo problema.
foreach (CrystalDecisions.CrystalReports.Engine.Table tbl in rd.Database.Tables)
{
TableLogOnInfo logon = tbl.LogOnInfo;
logon.ConnectionInfo = ci;
tbl.ApplyLogOnInfo(logon);
// tbl.Location = tbl.Location;
}
Sections sections = rd.ReportDefinition.Sections;
foreach (Section section in sections)
{
ReportObjects reportObjects = section.ReportObjects;
foreach (ReportObject reportObject in reportObjects)
{
if (reportObject.Kind == ReportObjectKind.SubreportObject)
{
SubreportObject subreportObject = (SubreportObject)reportObject;
ReportDocument subReportDocument = subreportObject.OpenSubreport(subreportObject.SubreportName);
SetConnection(subReportDocument, ci);
}
}
}
<<<