2009-04-03 15 views
5

Odkryłem, że w SQL Reporting może być problem. Mam ReportViewer na mojej stronie i wysyłam parametry przy użyciu następującej metody:Raportowanie SQL: Null Parameter

List<ReportParameter> myParams = new List<ReportParameter>(); 

myParams.Add(new ReportParameter("Start_Date", StartDate)); 
myParams.Add(new ReportParameter("End_Date", EndDate)); 

ReportViewer1.ServerReport.SetParameters(myParams); 

Działa to świetnie! Ale gdy próbuję ustawić parametr na wartość null, po uruchomieniu tego zapytania zachowuje on poprzednią wartość zamiast ustawiania wartości null.

ten kod na innym wypadku, który wykonuje po powyższym kodzie:

List<ReportParameter> myParams = new List<ReportParameter>(); 

myParams.Add(new ReportParameter("Start_Date")); 
// I even tried omiting this line. 
//(This is the null parameter I wish to pass) 
myParams.Add(new ReportParameter("End_Date", EndDate)); 

ReportViewer1.ServerReport.SetParameters(myParams); 

Czy ktoś zetknął się obejść lub innej techniki, aby uzyskać tej pracy?

Również jeśli początkowo nie zdefiniowałem parametru, przypisać parametr, nie definiować parametru, zachowuje on przypisaną wartość. (Wszystkie są zwrotami, każde zdarzenie).

Odpowiedz

7

Zrób coś takiego. Przetestowałem to w moim własnym małym projekcie testowym i wygląda na to, że działa.

List<ReportParameter> myParams = new List<ReportParameter>(); 

ReportParameter p = new ReportParameter("Start_Date"); 
p.Values.Add(null); 
myParams.Add(p); 

//myParams.Add(new ReportParameter("Start_Date")); 
// I even tried omiting this line. 
//(This is the null parameter I wish to pass) 
myParams.Add(new ReportParameter("End_Date", EndDate)); 

ReportViewer1.ServerReport.SetParameters(myParams); 
+1

Jest ustawiony na dopuszczenie wartości NULL. –

+1

Jeśli początkowo nie zdefiniuję parametru, wtedy przypisz parametr, a następnie nie definiuj parametru, zachowuje on przypisaną wartość. (Wszystkie są zwrotami, każde zdarzenie) –

0

Czy to te zmienne StartDate & EndTate typu DateTime? Być może ma to związek z tym, że zmienne DateTime nie mogą mieć wartości NULL, zamiast tego są DateTime.MinValue. Spróbuj ustawić parametr na DateTime.MinValue i odpowiednio postępuj.

+0

Nie są to ciągi, a nie daty. –

3

Czy próbowałeś dzwoniąc:

ReportViewer1.Reset(); 

między dwoma połączeniami?