2016-04-25 3 views
0

Мне нужно excecute ReportViewer в локальном режиме обработки с двумя источниками данных, но у меня есть проблема со вторым.ReportViewer с несколькими наборами данных, запущенных в localreport

Я рассматриваю отчет с построителем отчетов 3, и он отлично работает там (оба набора данных заполняют их таблицы уважения).

Но когда я вынести отчет в C#, то второй набор данных пуст, это код:

SqlCommand cmd = new SqlCommand(); 
cmd.Connection = con; 
cmd.CommandType = CommandType.Text; 
cmd.CommandText = nodoDataSet[0].FirstChild.InnerText.ToString().Replace("@Id", id.ToString()); 
System.Data.DataTable dt = new DataTable(); 
dt.Load(cmd.ExecuteReader()); 

SqlCommand cmd2 = new SqlCommand(); 
cmd2.Connection = con; 
cmd2.CommandType = CommandType.Text; 
cmd2.CommandText = nodoDataSet[1].FirstChild.InnerText.ToString().Replace("@Id", id.ToString()); 
System.Data.DataTable dt2 = new DataTable(); 
dt2.Load(cmd2.ExecuteReader()); 

con.Close(); 

ReportViewer viewer = new ReportViewer(); 
viewer.ProcessingMode = ProcessingMode.Local; 
viewer.LocalReport.ReportPath = urlReporte; 
viewer.LocalReport.DataSources.Add(new ReportDataSource() { Name = "Consulta", Value = dt }); 
viewer.LocalReport.DataSources.Add(new ReportDataSource() { Name = "Consulta2", Value = dt2 }); 
viewer.LocalReport.EnableExternalImages = true; 

List<ReportParameter>() parametros = new List<ReportParameter>(){ 
    new ReportParameter("Id",id.ToString()), 
}; 
viewer.LocalReport.SetParameters(parametros); 
pdf.Add(viewer.LocalReport.Render("PDF")); 

Я открываю XML, чтобы прочитать запрос SQL и заменить параметры, выполнить запрос в сервера и загружать DataTable, я делаю это для каждого запроса, обе команды получают данные.

Затем просто добавьте два источника данных в отчет и сделайте их в формате PDF.

Проблема заключается в том, что в коде, вторая таблица остается пустым:

Хорошо: http://i.imgur.com/6wWpVMA.png

Bad: http://i.imgur.com/JJz3K33.png

Таким образом, вопрос, почему?

Спасибо!

+0

Установите точку останова после 'dt2.Load'. Имеет ли dt2 данные? – Pikoh

+0

Здравствуйте, Pikoh, да, dt2 получает 3 записи из базы данных. –

ответ

0

Я, наконец, нашел решение!

Я просто проверяю параметр «Пользовательская транзакция при обработке запросов» в диалоговом окне «Свойства источника данных» и он работает!

Смежные вопросы