Popolare report con query dinamica

martedì 03 giugno 2008 - 16.20

jordi75 Profilo | Junior Member

Ciao, spero che possiate aiutarmi...
ho bisogno di creare dei report in cui i dati sono filtrati in base a specifiche inserite dall'utente e salvate nel database...
Ho creato un cubo olap che contiene i miei dati, ora però non so proprio dove sbattere la testa.
Mi spiego. In pratica l'utente specifica tramite una web app quali campi devono far parte del report. ogni cella può contenere (caso limite) un valore filtrato
per uno o più campi decisi dall'utente stesso.
La soluzione che mi sembra più giusta è quella di salvare nel database la stringa contenente il filtro della mia query per ogni campo scelto dall'utente.
Es: l'utente dice che la prima colonna del report deve contenere la voce A formata dalle voci 1.1,1.2,1.3. La voce 1.1 deve essere però filtrata per il valore x
del campo [filtro1], la 1.2 e la 1.3 per il valore y del campo [filtro2].
La query sarà quindi circa questa : select (1.1 + 1.2 + 1.3) as A from tabella where (voce=1.1 and filtro 1=x) or (voce=1.2 and filtro2=y) or (voce=1.3
and filtro2=y)

Quello che vorrei capire è se è possibile in report services andare a costruire la query sorgente in maniera dinamica, con del codice embedded o non so che altro

freeteo Profilo | Guru

ciao,
con reporting services RDLC (ovverlo lato client) non puoi fare modifiche alla query che usi per fare il report, nel senso che la struttura che lui si aspetta deve essere uguale a quella che riceverà in esecuzione.

Però puoi sempre sfruttare l'alias delle colonne che hai con la query Sql, proprio come dicevi tu il campo "A" si chiamerà sempre "A" sia che sia dato da 1.3+1.2 o che sia 1.2+1.1 etc...infatti fai "...) as A".
Così puoi farti una struttura che poi passerai al report, con i campi generici, tipo "Campo1, Campo2" etc...:
select '' as Campo1, '' as Campo2 from...
oppure "0 as Campo1" se li vuoi numerici.

Costruisci il report con questi dati fittizi, mentre a runtime gli verranno passati dei valori diversi, calcolati dalla query come dicevi tu, che corrisponderanno a "campo1,2 etc..." e quindi il report ha dei valori che riesce a recuperare.
Facendo così non ci sono problemi, perchè la struttura è rispettata.

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5