on 07-23-2014 11:40 AM
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
Hola
Quieres que estas bases de datos sean campos de selección?
Atte.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
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
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
User | Count |
---|---|
108 | |
12 | |
11 | |
6 | |
6 | |
4 | |
4 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.