Report & Sessioni

lunedì 18 febbraio 2008 - 18.41

d3c0 Profilo | Newbie

Ciao a tutti, ho 2 quesiti da formulare:

1- Come posso impostare la clausola WHERE su una colonna di tabella in una query di un report che mi va a leggere un valore in un campo di sessione ?

Sicuramente nn mi sono espresso al meglio !

Esempio:

SELECT * FROM tabella WHERE campoTabella = '" & sessione("valore").toString & "'

dove la variabile sessione e' di tipo httpSessionState

altrimenti se nn riesco ad effettuare il filtro mi carica tutti i dati dalla tabella d'appoggio, premetto che la tabella d'appoggio viene utilizzata da tutti gli utenti del portale quindi devo filtrare i dati solo dell'utente a lui associati, oppure se esiste un'alternativa sono nelle vostre mani !

2- Quali differenze esistono tra un report .rpt e .rdlc in termini di licenze e prestazioni ?

Grazie a tutti in anticipo

freeteo Profilo | Guru

>1- Come posso impostare la clausola WHERE su una colonna di tabella
>in una query di un report che mi va a leggere un valore in un
>campo di sessione ?
>Sicuramente nn mi sono espresso al meglio !
>Esempio:
>SELECT * FROM tabella WHERE campoTabella = '" & sessione("valore").toString
>dove la variabile sessione e' di tipo httpSessionState
questa variabile non è accessibile dal report, se non tramite il passaggio di un parametro, o tramite il settaggio da codice della proprieta' "RecordSelectionFormula" che tenga conto della variabile.
Questo perche' è il framework che ti da accesso alla sessione, il report ha un engine suo il quale è accessibile tramite la classe ReportDocument.In poche parole un codice di questo tipo dovrebbe fare al caso tuo:

ReportDocument report = new ReportDocument(); report.Load(Server.MapPath("CrystalReport1.rpt")); .... report.RecordSelectionFormula = "{campoUtente} = '" + Session["utente"] + '"; crystalReportViewer1.ReportSource = report; crystalReportViewer1.DataBind();


Dove "{campoUtente}" è il campo del report.Ecco stai attento che la sintassi di filtro non è "proprio" sql standard, ci assomiglia ma è 1po sua.
Cmq puoi impostare questo filtro da dentro al report (menu Report->Report->Selection Formula), e poi copiarti la sintassi (ovviamente salvando il report senza)



>2- Quali differenze esistono tra un report .rpt e .rdlc in termini
>di licenze e prestazioni ?
Sinceramente non ho dei dati certi perche' purtroppo non ho mai avuto tempo a sufficienza per fare un controllo significativo.
Cmq sicuramente se usi in applicazioni web Crystal ha una limitazione "intrinseca" di prestazioni dovuto al fatto che vogliono che per applicazioni server venga usato una versione particolare:
http://www.businessobjects.com/product/catalog/crystalreports_server/
Tutto dipende dal tipo di applicativo che stai sviluppando, e dai tempi che hai perche' ci sono queste cose da tenere in considerazione:
- Crystal usato lato server funziona e il degrado di prestazioni potrebbe essere ininfluente rispetto agli accessi/dati che visualizzi
- Crystal è piu' completo di Sql Reporting, sviluppare report complessi è sicuramente piu' facile e veloce
- Crystal ha supporto a classi "css" quindi nell'ottica web è sicuramente importante
- Reporting è piu leggero sia da installare che come runtime di esecuzione
- Reporting lavori meglio con collection tipizzate
- Reporting puoi agganciarti delle dll scritte in .net ed usare il codice .net, e questo è un grandissimo vantaggio
- Reporting come rdlc non ha tutte le funzioni (tipo navigazione di parametri) come c'e' in RDL (ovvero quello che si appoggia ad un ReportServer)

non mi resta che consigliarti alcune prove, anche per capire sia la mole di dati da visualizzare, il carico di accessi a regime, e soprattutto la complessita' dei report che devi fare.


>Grazie a tutti in anticipo
di niente, spero di esserti stato utile!

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

d3c0 Profilo | Newbie

Grazie per l'aiuto freeTeo, sei stato utilissimo

saluti
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5