Страница 1 из 1
DataSet
Добавлено: 17 сен 2012, 12:41
banzai17
Привет!
2 вопроса.
1) Может ли быть в отчете 2 источника данных?(скажем,один из запроса, другой из XML)?
2) Как "прикрутить" датасет к стимулу? Я делаю так:заполняю датасет, затем
report_ump.Dictionary.Clear();
report_ump.RegData(dataset);
report_ump.Dictionary.Synchronize();
report_ump.Render(false);
Stimulsoft.Report.Web.StiReportResponse.ResponseAsWord2007(Page, report_ump);
К сожалению,ничего не выходит,хотя датасет заполняется.
В самом .mrt файле создан источник данных из XML и указана схема(.xcd).
Подскажите,пожалуйста.Спасибо
Re: DataSet
Добавлено: 17 сен 2012, 15:01
HighAley
Здравствуйте.
1. Да, можно использовать разные источники данных в одном отчёте.
2. По данному куску кода ничего сказать не можем. Есть подозрение, что название датасета не совпадает с заданным во время дизайна.
Попробуйте, запустить дизайнер и посмотреть что там у вас получается.
Иначе нам необходима увидеть проект, который бы воспроизводил вашу проблему.
Спасибо.
Re: DataSet
Добавлено: 17 сен 2012, 15:23
banzai17
Код: Выделить всё
private DataTable GetTableForReport(int ActID)
{
string query = @"select d1.InventoryNumber as inv_num,d1.ModelName as model,d1.SerialNumber as ser_num,dt.NameRu as name_obor from Devices d1
left join DeviceTypes dt on d1.DeviceTypeID=dt.ID
where d1.ID in(
SELECT distinct d.ID
from Devices d
left join JobFact jf on jf.DeviceID=d.ID
left join EntityBase_Act ea on ea.ID=jf.ActID
where ea.ID=@ActNumber)";
SqlConnection rep_connection = new SqlConnection(ConfigurationManager.AppSettings["ReportConnection"]);
SqlCommand comm = new SqlCommand(query);
comm.Connection = rep_connection;
comm.Parameters.AddWithValue("@ActNumber", ActID);
rep_connection.Open();
SqlDataReader reader = comm.ExecuteReader();
DataSet dt3 = new DataSet("Act");
DataTable NewTable = new DataTable("Act");
NewTable.Columns.Add(new DataColumn("name_obor", typeof(string)));
NewTable.Columns.Add(new DataColumn("model", typeof(string)));
NewTable.Columns.Add(new DataColumn("inv_num", typeof(string)));
NewTable.Columns.Add(new DataColumn("ser_num", typeof(string)));
dt3.Tables.Add(NewTable);
while (reader.Read())
{
DataRow dr = dt3.Tables["Act"].NewRow();
dr["name_obor"] = reader["name_obor"].ToString();
dr["model"] = reader["model"];
dr["inv_num"] = reader["inv_num"];
dr["ser_num"] = reader["ser_num"];
dt3.Tables["Act"].Rows.Add(dr);
dt3.AcceptChanges();
}
reader.Close();
reader.Dispose();
dt3.AcceptChanges();
return dt3.Tables["Act"];
}
затем
Код: Выделить всё
ActToUMP report_ump = new ActToUMP();
report_ump.Dictionary.Clear();
report_ump.RegData(GetTableForReport(Convert.ToInt32(Request.QueryString["id"])));
report_ump.Dictionary.Synchronize();
report_ump.Render(false);
Stimulsoft.Report.Web.StiReportResponse.ResponseAsWord2007(Page, report_ump);
знаю,что не очень аккуратно.это чтобы влезло.
Re: DataSet
Добавлено: 17 сен 2012, 16:52
banzai17
Ребят,подсобите,пожалуйста. Который час уже маюсь. Может,кто сталкивался?
Re: DataSet
Добавлено: 17 сен 2012, 17:38
Aleksey
Здравствуйте,
Пожалуйста, попробуйте использовать следующий код:
Код: Выделить всё
report_ump.Dictionary.DataSources.Clear();
report_ump.RegData("XMLConnection", GetTableForReport(Convert.ToInt32(Request.QueryString["id"])));
...
Спасибо.