Ich möchte gerne dem Anwender über Microsoft Reporting Services eine Exportmöglichkeit einer frei auswählbaren Tabelle nach Excel zur Verfügung stellen.
Hierzu habe ich die Prozedur 'SP_Export_Tabelle' mit Variablenübergabe geschrieben.
Der Prozedur teile ich mit:
Tabellenname, Spalte für Sortierung, Zeile von, Zeile bis
Über eine kaskardierte Parameterabfrage in Reporting Services wird die Tabelle ausgewählt und anschließend die Spalte zur Sortierung angegeben.
Datenbasis ist hierzu die View 'VI_Tabelle_Spalte'
Soweit kein Problem.
Aber wie kann ich im Layout von Reporting Services eine Tabelle darstellen,
die ich noch nicht kenne?
Im Ergebnis müsste die ausgwählte Tabelle mit allen Spalten 1 zu 1 dargestellt werden.
Kennt jemand hierzu eine Lösung?
-- VI_Tabelle_Spalte
SELECT
o.name as Tabelle,
c.name as Spalte
FROM
(
select *
from sysobjects
where xtype = 'U'
) as o
INNER JOIN
(
select *
from syscolumns
) as c
ON c.id = o.id
ORDER BY
o.name
,c.name
-- Prozedur Export Tabelle
exec SP_Export_Tabelle 'tab1', 'spalteC', 1, 2000
exec SP_Export_Tabelle 'tab50', 'spalteF', 10000, 30000
create procedure SP_Export_Tabelle
@tabelle varchar(100),
@sortierung varchar(100),
@RowVon bigint,
@RowBis bigint
as
begin
declare @sql varchar(max)
set @sql =
'select daten.*
from
(
select
row_number() over (order by ' + @sortierung +') as RowNumber
, *
from ' + @tabelle +
') as daten
where RowNumber between ' + cast(@RowVon as varchar(10)) + 'and ' + cast(@RowBis as varchar(10))
--print @sql
exec (@sql)
end
Hierzu habe ich die Prozedur 'SP_Export_Tabelle' mit Variablenübergabe geschrieben.
Der Prozedur teile ich mit:
Tabellenname, Spalte für Sortierung, Zeile von, Zeile bis
Über eine kaskardierte Parameterabfrage in Reporting Services wird die Tabelle ausgewählt und anschließend die Spalte zur Sortierung angegeben.
Datenbasis ist hierzu die View 'VI_Tabelle_Spalte'
Soweit kein Problem.
Aber wie kann ich im Layout von Reporting Services eine Tabelle darstellen,
die ich noch nicht kenne?
Im Ergebnis müsste die ausgwählte Tabelle mit allen Spalten 1 zu 1 dargestellt werden.
Kennt jemand hierzu eine Lösung?
-- VI_Tabelle_Spalte
SELECT
o.name as Tabelle,
c.name as Spalte
FROM
(
select *
from sysobjects
where xtype = 'U'
) as o
INNER JOIN
(
select *
from syscolumns
) as c
ON c.id = o.id
ORDER BY
o.name
,c.name
-- Prozedur Export Tabelle
exec SP_Export_Tabelle 'tab1', 'spalteC', 1, 2000
exec SP_Export_Tabelle 'tab50', 'spalteF', 10000, 30000
create procedure SP_Export_Tabelle
@tabelle varchar(100),
@sortierung varchar(100),
@RowVon bigint,
@RowBis bigint
as
begin
declare @sql varchar(max)
set @sql =
'select daten.*
from
(
select
row_number() over (order by ' + @sortierung +') as RowNumber
, *
from ' + @tabelle +
') as daten
where RowNumber between ' + cast(@RowVon as varchar(10)) + 'and ' + cast(@RowBis as varchar(10))
--print @sql
exec (@sql)
end
Comment