Отчетность SQL: нулевой параметр - PullRequest
5 голосов
/ 03 апреля 2009

Я обнаружил, что в отчетах SQL может быть проблема. У меня на странице есть ReportViewer, и я отправляю параметры следующим способом:

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

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

ReportViewer1.ServerReport.SetParameters(myParams);

Это прекрасно работает! Но когда я пытаюсь установить для параметра значение NULL, после выполнения этого запроса он сохраняет прежнее значение, а не устанавливает его в NULL.

Я запускаю этот код для другого события, которое выполняется после кода выше:

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);

Кто-нибудь сталкивался с работой или другой техникой, чтобы заставить это работать?

Также, если я изначально не определяю параметр, затем назначаю параметр, затем не определяю параметр, он сохраняет присвоенное значение. (Это все постбэки, каждое событие)

Ответы [ 3 ]

7 голосов
/ 03 апреля 2009

Сделайте что-то вроде этого ... Я проверил это в своем маленьком тестовом проекте, и, похоже, он работает.

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);
3 голосов
/ 05 апреля 2009

Вы пробовали звонить:

ReportViewer1.Reset();

между двумя вызовами?

0 голосов
/ 03 апреля 2009

Являются ли эти переменные StartDate & EndDate типа DateTime? Возможно, это связано с тем, что переменные DateTime не могут быть установлены в null, вместо этого они DateTime.MinValue Попробуйте установить для параметра значение DateTime.MinValue и обработать его соответствующим образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...