cancel
Showing results for 
Search instead for 
Did you mean: 

Informe de Crystal Reports de varias bases de datos.

Former Member
0 Kudos

Hola a todos.

Desde la versión 8.82 y con la integración de crystal reports como editor de informes se abre la posibilidad de hacer o diseñar un informe que tenga distintos orígenes o fuentes de datos.

En la gestión de informes y layouts, mediante el botón de otras posibilidades se podría definir.

No he encontrado la forma de añadir aquí otra bbdd dentro del mismo servidor o de otro.

Buscando y rebuscando se hace una mención en la ayuda que los orígenes múltiples se tienen que seleccionar a la hora de hacer el informe, se supone que en el crystal, pero no he encontrado la forma de hacerlo.

La cuestión que planteo es

¿Como colocar un informe de crystal repots en una bbdd que cuando lo ejecute me devuelva los valores de más de una bbdd?

Por ejemplo para obtener el total de ventas OINV.Doctotal de varias bases de datos

Accepted Solutions (0)

Answers (1)

Answers (1)

felipe_loyolarodriguez
Active Contributor
0 Kudos

Hola

Quieres que estas bases de datos sean campos de selección?

Atte.

Former Member
0 Kudos

Me vale cualquier opción que pueda probar y evaluar cual es la más adecuada.

Se que construyendo el origen del informe desde una consulta sql lo podemos obtener, pero intentaba otra opción un poco más estandarizada.

Generar un informe partiendo de tablas y campos de la aplicación y que luego en la ejecución consolide de más de una bbdd.

Igual estoy pidiendo demasiado a nuestros amigos de SAP.

felipe_loyolarodriguez
Active Contributor
0 Kudos

Hola Gonzalo

Bueno si, es un poco complejo pero no imposible.

Creo que la manera más rápida de hacer esto lo que pides es crear un SP con tantos parámetros como bases quieras consolidar.

Luego concatenas estos parámetros dentro de variables tipo texto.


create proc VariasBD (@bd_1 varchar(128), @bd_2 varchar(128), @bd_3 varchar(128))

as

begin

    declare

        @ssql varchar(8000),

        @ssql2 varchar(8000),

        @ssql3 varchar(8000)

    if isnull(@bd_1,'')<>''

    begin

        set @ssql=

        '

            select '''+@bd_1+''' as [Empresa], T0.AcctCode [Cuenta], T0.AcctName [Nombre]

            from '+@bd_1+'.dbo.OACT T0

        '

    end

    if isnull(@bd_2,'')<>''

    begin

        set @ssql2=

        '

            union all

            select '''+@bd_2+''' as [Empresa], T0.AcctCode [Cuenta], T0.AcctName [Nombre]

            from '+@bd_2+'.dbo.OACT T0

        '

    end

    if isnull(@bd_3,'')<>''

    begin

        set @ssql3=

        '

            union all

            select '''+@bd_3+''' as [Empresa], T0.AcctCode [Cuenta], T0.AcctName [Nombre]

            from '+@bd_3+'.dbo.OACT T0

        '

    end   

   

    if isnull(@bd_1,'')<>'' or isnull(@bd_2,'')<>'' or isnull(@bd_3,'')<>''

    begin

   

        exec(@ssql + @ssql2 + @ssql3)

   

    end

end

Acto seguido en crystal creas parámetros con valores de lista para que al momento de levantar el reporte te pida las BD registradas.

Saludos

felipe_loyolarodriguez
Active Contributor
0 Kudos

Otra opción es con un cursor sobre la taba SRGC de la SBO-COMMON, esa tabla contiene el listado de las bases de datos que contienen SAP B1

sería algo así


declare @bd varchar(128)

declare @sql varchar (8000)

declare C cursor for

select dbName from [SBO-COMMON]..SRGC

open C

fetch next from C into @bd

    while @@FETCH_STATUS=0

    begin

   

        set @sql=

        '

            select '''+@bd+''' [Empresa], AcctCode, AcctName

            from '+@bd+'.dbo.OACT

        '

       

        exec (@sql)

       

        fetch next from C into @bd

    end

    close C

deallocate C

Saludos