Passare un parametro al report che effettui un filtro sull' sql ...

mercoledì 04 marzo 2009 - 17.59

AndreaKpr Profilo | Senior Member


Ciao ragazzi, domandone ...
Ho un report che è collegato alla mia soluzione C#.08
Supponiamo che nel report ho collegato come source la tabella magazzino.
Dal programma con una form apposita renderizzo il report impostando la corretta connection string del db.
Fino a qui tutto bene.
Per complicarsi le cose ho pensato che il report potesse essere filtrato con dei campi che ho in maschera.
C'è modo di passare l'sql che creso con i filtri al report e di utilizzarli nel source ???
Grazie !!! ;op

Jeremy Profilo | Guru

Ciao Andrea.
Puoi valorizzare un DataTable a runtime, facendo peò in modo che prenda la stessa struttura di quello che hai usato in fase di design del report, e successivamente assegnarlo alla proprietà DataSource del report.


Facci sapere...
Ciao

AndreaKpr Profilo | Senior Member


Ciao ti ringrazio per la risposta.
Ho capito il tuo intento ma non è ciò che fa al caso mio.
Qui si è trattato un pò l'argomento : http://www.dotnethell.it/forum/messages.aspx?ThreadID=6073
ma non ho capito se hanno risolto o meno...

Jeremy Profilo | Guru

Ciao Andrea.
Puoi fare un esempio pratico?
Perchè da quello che ho capito io .... la mia proposta potrebbe essere risolutiva ..... però sicuramente, come dici tu, non ho capito bene il problema.

Facci sapere...
Ciao

freeteo Profilo | Guru

Ciao, perdona il ritardo nella risposta...ti scrivo lo stesso anche se probabilmente avrai già risolto.

Hai già considerato la possibilità di usare la "recordSelectionFormula" all'interno del report?
Questa proprietà, che puoi tranquillamente gestire anche da codice, impostandola dopo che hai caricato il report la prima volta (facendo solo successivamente un refresh) ti permette di fare dei filtri sui dati successivi alla query.

Guarda questo esempio:
http://www.dotnethell.it/articles/Crystal-Reports-Integration-Windows-Form.aspx

nel listato1 vedi che viene impostato da codice la "RecordSelectionFormula" e cmq a destra del tip c'è anche il download diretto che ti può aiutare a capire il codice.
Non so se è questo quello che cerchi, cmq dacci un'occhiata...

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

AndreaKpr Profilo | Senior Member

Ciao a tutti e grazie.
Dopo il primo post avevo certaco un pò nel sito trovato ques'esempio.
Direi che è quello che cercavo, ma c'è una piccola complicanza... la sintassi.

Mi spiego io in base ad una maschera ho una serie di filtri, la mia intezione era di passare tutta la "Where" di sql al report.
Ma mi pare di aver capito che non è cosi diretto... dovrei passare al report un filtro campo per campo.
Dico giusto ???

freeteo Profilo | Guru

>la mia intezione era di passare tutta la "Where" di sql al report.
>Ma mi pare di aver capito che non è cosi diretto... dovrei passare
>al report un filtro campo per campo.
>Dico giusto ???
diciamo che devi costruirti si la sintassi per la SelectionForumula del report partendo da quella sql che avrai di ritorno dalla tua maschera di filtri.
Se invece puoi accedere al database, e passargli tu i dati ti basta fare la connessione al db tramite codice, caricare una DataTable e poi passarla al report tramite "SetDataSource" del report stesso.

Nell'esempio che ti ho segnalato viene fatto anche questo, nel metodo "GetDati" ti basta adattare il tuo codice, e quello che puoi passare come sorgente al report deve avere la stessa struttura con cui hai disegnato il report stesso.Per il resto puoi fare qualsiasi query che vuoi tanto la fai in ado.net (da codice) e poi al report arrivano solo i dati da visualizzare sottoforma di "DataTable" e a lui non interessa come l'hai popolata...

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

AndreaKpr Profilo | Senior Member


Ciao, Si ho capito entrembi i metodi. Il secondo è come diceva jeremy...
Il problema sta nel fatto che del report io non conosco la parte di "Select" della query che farà Crystal in quanto pesonalizzabile dall'utente finale ...
Ora che ho le idee chiare sulla piattaforma decido quale è la strada migliore.
Vi ringrazio entrambi !!!
RiCiao!
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