DataSet

Обсуждение Stimulsoft Reports.NET
Ответить
banzai17
Сообщения: 17
Зарегистрирован: 03 сен 2012, 10:07

DataSet

Сообщение 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).
Подскажите,пожалуйста.Спасибо
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

Re: DataSet

Сообщение HighAley »

Здравствуйте.

1. Да, можно использовать разные источники данных в одном отчёте.

2. По данному куску кода ничего сказать не можем. Есть подозрение, что название датасета не совпадает с заданным во время дизайна.
Попробуйте, запустить дизайнер и посмотреть что там у вас получается.

Иначе нам необходима увидеть проект, который бы воспроизводил вашу проблему.

Спасибо.
banzai17
Сообщения: 17
Зарегистрирован: 03 сен 2012, 10:07

Re: DataSet

Сообщение 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);
знаю,что не очень аккуратно.это чтобы влезло.
Вложения
ActToUMP.mrt
(55.25 КБ) 337 скачиваний
banzai17
Сообщения: 17
Зарегистрирован: 03 сен 2012, 10:07

Re: DataSet

Сообщение banzai17 »

Ребят,подсобите,пожалуйста. Который час уже маюсь. Может,кто сталкивался?
Aleksey
Сообщения: 2921
Зарегистрирован: 22 апр 2010, 06:57

Re: DataSet

Сообщение Aleksey »

Здравствуйте,

Пожалуйста, попробуйте использовать следующий код:

Код: Выделить всё

report_ump.Dictionary.DataSources.Clear();
report_ump.RegData("XMLConnection", GetTableForReport(Convert.ToInt32(Request.QueryString["id"])));
...
Спасибо.
Ответить