PDA

Ver la Versión Completa : Problema Conexion a BD de Crystal Reports


radaalvaro
24-02-2007, 22:27:16
Queridos amigos.

Tengo un problema, que me me tiene el borde de la desesperación, hasta ahora no encontre solución. Procedo a explicarles.

Tengo un reporte en Crystal Reports que fue elaborado con una conexión estatica a tabla de una Base de Datos (Llamemos a la base de datos ABC). Hasta ahi, todo va de maravilla.

Bien, en mi programa quiero que ese reporte obtenga los datos de otra base de datos con la misma estructura. Pero lamentablemente no cambia la conexión hacia la nueva BD, y solo me muestra los datos de la BD en la que se diseño es decir ABC. adjunto a continuación el código que uso para hacer el cambio a la BD.


procedure MuestraReporte;
var
cryBase : CrystalDecisions.CrystalReports.Engine.Database;
crytablas : CrystalDecisions.CrystalReports.Engine.Tables;
crytabla : CrystalDecisions.CrystalReports.Engine.Table;
crtablaobj : TObject;
TablaInfo : CrystalDecisions.Shared.TableLogOnInfo;
cnx : ConnectionInfo;
cryDoc : CrystalDecisions.CrystalReports.Engine.ReportDocument;
Begin
cnx := CrystalDecisions.shared.ConnectionInfo.Create;
CryDoc := CrystalDecisions.CrystalReports.Engine.ReportDocument.Create;
cryDoc.Load('Lista.rpt');
cnx.DatabaseName := 'NuevoSP';
cnx.ServerName := '.';
cnx.UserID := 'sa';
cnx.Password := 'sa';
CryBase := cryDoc.Database;
CryTablas := CryBase.Tables;

for crtablaobj in crytablas do
begin
CryTabla := CrystalDecisions.CrystalReports.Engine.Table(crtablaobj);
TablaInfo := Crytabla.LogOnInfo;
TablaInfo.ConnectionInfo := Cnx;
CryTabla.ApplyLogOnInfo(TablaInfo);
end;

CryDoc.Refresh;
Crv.ReportSource := cryDoc;
Crv.LogOnInfo.Item[0].ConnectionInfo.ServerName := '.';
Crv.LogOnInfo.Item[0].ConnectionInfo.UserID := 'sa';
Crv.LogOnInfo.Item[0].ConnectionInfo.password := 'sa';
Crv.LogOnInfo.Item[0].ConnectionInfo.DataBaseName := 'NuevoSP';
Crv.Refresh;
end;



Por cierto, no es el código más optimo, ya que se podria acortar mas, pero esta hecho para que simplemente funcione. Pero nada.

Si alguien tiene una idea de cual pueda ser el problema, le agradeceria mucho.

Y tambien les agradezco a todos los que lean este hilo, por su tiempo.

Saludos.