Avalados por :

Cómo cambiar la conexión de Crystal Reports de DBF a SQL en tiempo de ejecución con RAS

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 0 Vistas
0
Loading...

Hola,

Tengo un informe de Crystal que cargaba un archivo DBF, pero quiero cambiar la conexión a SQL en tiempo de ejecución a través de RAS. A continuación se muestra el código que encontré en el foro de SAP, pero sigo recibiendo el mensaje "Error al cargar la información de la base de datos".. ¿Qué podría estar mal aquí?

Gracias,

CrystalDecisions.CrystalReports.Engine.ReportDocument myReport2 = new CrystalDecisions.CrystalReports.Engine.ReportDocument();

protected void Page_Load(object sender, EventArgs e) {

try {

myReport2.Load( Server.MapPath( "CRDBase.rpt" ) );

ISCDReportClientDocument reportClientDocument = myReport2.ReportClientDocument;

ISCDReportClientDocument rcd;

rcd = reportClientDocument;

reportClientDocument.DatabaseController.LogonEx( "SQL2008R2", "CR", "smisreader", "pass@word1" );

//Crear el PropertyBag de inicio de sesión para la conexión que deseamos utilizar

CrystalDecisions.ReportAppServer.DataDefModel.PropertyBag logonDetails = new CrystalDecisions.ReportAppServer.DataDefModel.PropertyBag();

logonDetails.Add( "Auto Translate", -1 );

logonDetails.Add( "Connect Timeout", 15 );

logonDetails.Add( "Data Source", "SQL2008R2" );

logonDetails.Add( "General Timeout", 0 );

logonDetails.Add( "Initial Catalog", "CR" );

logonDetails.Add( "Integrated Security", "false" );

logonDetails.Add( "Locale Identifier", 1033 );

logonDetails.Add( "OLE DB Services", -5 );

logonDetails.Add( "Provider", "SQLOLEDB" );

logonDetails.Add( "Use Encryption for Data", 0 );

logonDetails.Add( "Owner", "dbo" ); // esquema

//Crear el PropertyBag de motor de consulta con los detalles del proveedor y el PropertyBag de inicio de sesión

CrystalDecisions.ReportAppServer.DataDefModel.PropertyBag QE_Details = new CrystalDecisions.ReportAppServer.DataDefModel.PropertyBag();

QE_Details.Add( "Database DLL", "crdb_ado.dll" );

QE_Details.Add( "QE_DatabaseName", "CR" );

QE_Details.Add( "QE_DatabaseType", "OLE DB (ADO)" );

QE_Details.Add( "QE_LogonProperties", logonDetails );

QE_Details.Add( "QE_ServerDescription", "SQL2008R2" );

QE_Details.Add( "QE_SQLDB", "True" );

QE_Details.Add( "SSO Enabled", "False" );

QE_Details.Add( "Owner", "dbo" );

CrystalDecisions.ReportAppServer.DataDefModel.ConnectionInfo newConnInfo = new CrystalDecisions.ReportAppServer.DataDefModel.ConnectionInfo();

CrystalDecisions.ReportAppServer.DataDefModel.ConnectionInfo oldConnInfo;

CrystalDecisions.ReportAppServer.DataDefModel.ConnectionInfos oldConnInfos;

oldConnInfos = rcd.DatabaseController.GetConnectionInfos( null );

for( int I = 0; I < oldConnInfos.Count; I++ ) {

oldConnInfo = oldConnInfos<i>;

newConnInfo.Attributes = QE_Details;

newConnInfo.Kind = CrystalDecisions.ReportAppServer.DataDefModel.CrConnectionInfoKindEnum.crConnectionInfoKindCRQE;

reportClientDocument.ReplaceConnection( oldConnInfo, newConnInfo, null, CrystalDecisions.ReportAppServer.DataDefModel.CrDBOptionsEnum.crDBOptionDoNotVerifyDB );

}

CrystalReportViewer2.ReportSource = myReport2;

}

catch( Exception ex ) {

}

}

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

1 Respuestas

0
Loading...

Consulta si el uso de la utilidad descrita en el KB [1553921 - ¿Existe una utilidad que ayude en la escritura de código de inicio de sesión de base de datos?|http://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/oss_notes_boj/sdn_oss_boj_bi/sap(bD1lbiZjPTAwMQ==)/bc/bsp/spn/scn_bosap/notes%7B6163636573733d36393736354636443646363436353344333933393338323636393736354637333631373036453646373436353733354636453735364436323635373233443330333033303331333533353333333933323331%7D.do] te ayudará.

La mejor manera de usar lo anterior es crear un informe simple utilizando la conexión a SQL. Luego ejecuta el informe en la utilidad mencionada y observa el código generado.

Ludek

Síguenos en Twitter http://twitter.com/SAPCRNetSup

¿Tienes ideas de mejora? Prueba [SAP Idea Place|https://ideas.sap.com/community/products_and_solutions/crystalreports]

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?