1: using (ReportingService2005SoapClient rs = this.CreateReportingService2005SoapClient())
2: {
3: string batchID = string.Empty;
4: ServerInfoHeader infoHeader = rs.CreateBatch(out batchID);
5: BatchHeader bh = new BatchHeader()
6: {
7: BatchID = batchID,
8: AnyAttr = infoHeader.AnyAttr
9: };
10: CatalogItem[] items = null;
11: rs.ListChildren(reportFolder, true, out items);
12:
13: foreach (var item in items)
14: if (string.Compare(item.ID, reportId.ToString(), true) == 0)
15: {
16: // recupero gli attuali parametri e mi tengo una copia degli originali
17: ReportParameter[] defaultParameters = null;
18: ReportParameter[] parameters = null;
19: rs.GetReportParameters(item.Path, null, false, null, null, out defaultParameters);
20: rs.GetReportParameters(item.Path, null, false, null, null, out parameters);
21:
22:
23: foreach (ReportParameter parameter in parameters)
24: {
25: //modifico i valori dei parametri che voglio cambiare
26: if (string.Compare(parameter.Name, "dateStart", true) == 0)
27: parameter.DefaultValues = new string[] { string.Format("{0:s}", startDate) };
28: else if (string.Compare(parameter.Name, "dateEnd", true) == 0)
29: parameter.DefaultValues = new string[] { string.Format("{0:s}", endDate) };
30: }
31: // setto i parametri modificati nel report
32: rs.SetReportParameters(bh, item.Path, parameters);
33: string historyId = string.Empty;
34: Warning[] warnings = null;
35: // creo lo snapshot
36: rs.CreateReportHistorySnapshot(bh, item.Path, out historyId, out warnings);
37: // setto i parametri originali
38: rs.SetReportParameters(bh, item.Path, defaultParameters);
39: // eseguo il tutto sotto un'unica transazione
40: rs.ExecuteBatch(bh);
41: return;
42: }
43: }