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