Vb.net 2005(report integrato) parametro, come impostarlo?

mercoledì 28 giugno 2006 - 10.56

Amodio Profilo | Expert



salve a tutti
nella gestione dei report inclusi in visual studio.net 2005 a differenza dei service reporting non si puo' impostare una query a mano es:
"select * from articoli where codarticolo =@parametro"
in cui questa query richeide espressamente un parametro,il quale viene settato dalla gestione dei parametri dal menu'
infatti si puo' solo selezionare una tabella o una query che è gia' stata salvata nel database, senza possibilita' di impostare una query a mano.
il bello è che anche salvando una queri(come quella di esempio sopra) nel database,non appena esce la maschera per selezionare la tabella/query visualizza tutto tranne la query con parametri!!!!! forse è l'ambiente che vuole solo query secche!!!

come posso fare quindi
per impostare una query che richiede un parametro nello strumento report di visual studio 2005?

p.s.
non sto parlando di reporting service

freeteo Profilo | Guru

ciao,
stai parlando dei report di CrystalReport ? in quel caso devi inserire 1 parametro "es: mioparametro" e lo vai a mettere nella "selectionformula"(tastoDxsopra la report->Report->selectionFormula->records)" dove specifichi il filtro da applicare ai dati caricati es:

{miocampo} > {?mioparametro}

dove i 2 elementi li prendi da doppio click sui nodi rispettivi nel "formula editor".
A questo punto hai costruito il report che ti chiede quel valore prima di mostrarti i dati, appunto perhce l'hai messo nella selectionformula.Non ti resta altro che settarlo da codice:

mioreport.SetParameterValue("mioparametro", 1000);

etc...o parli cmq dei report che hanno estensione "RDLC" ?

ciao.

Matteo Raumer
MCAD ... .net addicted :-)
http://blogs.dotnethell.it/freeteo

Amodio Profilo | Expert

eh si scusa
sto parlando dei repot con estenzione rdcl :(

ne sai qualcosa?

freeteo Profilo | Guru

ciao,
quello che intendi fare tu con i report RDLC purtroppo non si puo' fare, perche questa versione (a differenza dei report RDL ) sono stati pensati per essere eseguiti dentro ad 1applicativo .net (web o win32), percio' quei tipi di filtri vanno applicati da codice alla sorgente dati, quindi diciamo nello strato di "dataLayer" ovvero tramite ado.net.
Una volta filtrati i dati la tua datasource del report potra' essere data in pasto al report.
Se invece vuoi questa funzionalita', bisgona che i report siano piu' "autosufficenti" chiedendoti il parametro ed elaborando tutto loro, quindi proprio la versione di reporting services che tutti conosciamo.
Agendo in 1altro modo quindi puoi ottenere lo stesso risultato

ciao.

Matteo Raumer
MCAD ... .net addicted :-)
http://blogs.dotnethell.it/freeteo

Amodio Profilo | Expert

uhm ho provato altre soluzioni.ma invano

cmq puoi dirmi come inviare una query al rport?
forse potrei riuscire a risolvere molte cose in questo modo

freeteo Profilo | Guru

ciao,
come ti dicevo, devi lavorare con i datasource e non con il report, ovvero tu setti il datasource con i dati che ti interessano (quindi filtrati) e poi gli dai questa datasource al report, e lui te li visualizza.
Quindi non è che gli passi 1a query al report, ma gli passi 1 "datasource" (fai conto di passargli 1a datatable riempita) e questo lo puoi fare in questo modo:
.... SqlConnection zCn = new SqlConnection("data source=.\...."); SqlCommand zCmd = new SqlCommand("select * from utenti where nome like('a%')",zCn); SqlDataAdapter zDa = new SqlDataAdapter(zCmd); DataTable zDt = new DataTable(); zDa.Fill(zDt); LocalReport mioreport = ReportViewer1.LocalReport; mioreport.ReportPath = @"c:\..\..\mioreport.rdlc"; mioreport.DataSources.Add(new ReportDataSource("DataSet1_utenti",zDt)); ....
dove "DataSet1_utenti" è il nome del datasource che ho aggiunto al report in fase di costruzione (design di visual studio).

Come vedi dall'esempio il filtro viene fatto a livello di datatable e poi viene aggiunto 1 datasource per il report con quella datatable filtrata...adesso, capito il concetto, lo devi adattare alla tua esigenza.

ciao.

Matteo Raumer
MCAD ... .net addicted :-)
http://blogs.dotnethell.it/freeteo

Amodio Profilo | Expert

ciao
grazie per il pezzo di codice mi è molto utile
ora lo sto traducendo in vb.net, ho fatto miglioramenti,pero' non aggiorna!
questo è il codice
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
ho inserito la select di selezionare solo l'elemento con codice 1..ma non ifltra, anzi si riprende la select di quando ho creato il report iniziale :(, sai cosa sbaglio?
una cosa...nel tuo codcie non c'è il pezzo in cui associ il repot alla variabile miorepot..(forse è questo che mi manca)



altra domanda:
sai anche come modificare una cella di testo del report da codice?

grazie

Fogliluc Profilo | Newbie

ciao ,

dopo vari tentativi ho provato ad inserire questa riga :

l.DataSources.Clear()

prima di aggiungere il datasource al report.
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