Создать источник данных по умолчанию
Создать источник данных по умолчанию
Здравствуйте!
Есть необходимость сделать следующее:
1. Есть набор данных получаемых через Entity Framework 4, соответственно, прописан объект в модели данных.
2. Необходимо создать отчет, использующий этот набор данных и сохранить его в ресурсах.
3. При нажатии на кнопку показать отчет для каждого набора данных, запрошенного пользователем.
Пример:
Есть набор пользователей с указанием их ролей. Надо создать типовый отчет, использующий бизнес объект "Пользователь" и показывать его столько раз, сколько типов ролей пользователь выбрал на форме. Тоесть, для выбранных пяти ролей должно появиться пять отчетов со своим набором данных в каждом из них.
Я понял, что надо работать через BusinessObjects, объясните, пожалуйста, на пальцах, как мне поступить в данном случае.
Есть необходимость сделать следующее:
1. Есть набор данных получаемых через Entity Framework 4, соответственно, прописан объект в модели данных.
2. Необходимо создать отчет, использующий этот набор данных и сохранить его в ресурсах.
3. При нажатии на кнопку показать отчет для каждого набора данных, запрошенного пользователем.
Пример:
Есть набор пользователей с указанием их ролей. Надо создать типовый отчет, использующий бизнес объект "Пользователь" и показывать его столько раз, сколько типов ролей пользователь выбрал на форме. Тоесть, для выбранных пяти ролей должно появиться пять отчетов со своим набором данных в каждом из них.
Я понял, что надо работать через BusinessObjects, объясните, пожалуйста, на пальцах, как мне поступить в данном случае.
Создать источник данных по умолчанию
Здравствуйте,
далее можно сделать синхронизацию бизнес-объекта и словаря данных (добавить его мета-описание в отчет) при помощи такого кода:
По поводу сохранения отчета в ресурсах. Если имеются ввиду ресурсы сборки, то можно подключить отчет в виде файла. После чего грузить его, как поток:
если ресурсы - это база данных, то можно сохранить и загрузить позднее отчет в виде строки или в виде байт-массива.
Спасибо.
Бизнес объект региструется в отчете при помощи такого кода:1. Есть набор данных получаемых через Entity Framework 4, соответственно, прописан объект в модели данных.
2. Необходимо создать отчет, использующий этот набор данных и сохранить его в ресурсах.
3. При нажатии на кнопку показать отчет для каждого набора данных, запрошенного пользователем.
Код: Выделить всё
report.RegBusinessObject("MyData", myData);
Код: Выделить всё
report.Dictionary.SynchronizeBusinessObjects(int maxLevel);
Код: Выделить всё
report.Load(stream);
Не совсем понятна задача, которую нужно решить. Во всех случая отчет один и тот же или разный? Отчет генерируется из кода?Пример:
Есть набор пользователей с указанием их ролей. Надо создать типовый отчет, использующий бизнес объект "Пользователь" и показывать его столько раз, сколько типов ролей пользователь выбрал на форме. Тоесть, для выбранных пяти ролей должно появиться пять отчетов со своим набором данных в каждом из них.
Я понял, что надо работать через BusinessObjects, объясните, пожалуйста, на пальцах, как мне поступить в данном случае.
Спасибо.
Создать источник данных по умолчанию
Пожалуйста, можно по-подробней про регистрацию бизнес объекта?
Вот например, у меня есть таблица с пользователями, которую надо подсунуть отчету. Что надо указывать в RegBusinessObject - тип, который формирует EF или непосредственно уже сам набор данных?
Тоесть
или
Если второй вариант, то значит, регистрировать этот объект мне надо непосредственно перед выполнением отчета?
Про сохранение в ресурсах - на форму можно кинуть отчет stiReport, у него в свойствах есть настройка "SaveReportInResources", как я понимаю, включение данного свойства сохраняет все изменения в отчете и после запуска приложения, этот отчет можно спокойно вызывать через метов Show?
Тут же вопрос - если отчет сохраняется, то как мне прописать в него мой объект, чтобы в Designtime я мог его открыть из IDE и там он уже присутствовал?
В идеале мне нужно реализовать следующее:
1. Кинуть отчет на форму (stiReport)
2. Прописать в нем мой бизнес объект (его структуру)
3. На момент показа отчета заполнить ранее определенный в отчете бизнес объект реальными данными по параметрам, выбранным пользователем
4. Показать отчет для каждого из выбранных параметров (что бы все отчеты показывались одновременно)
Отчет один и форма у него будет одна и та же, изменяться будут только сами значения - они будут фильтроваться по параметрам, выбираемым пользователем, например надо показать всех пользователей, имеющих статус администратора или оператора, будет показано две формы отчета одинаковых по форме, но разных по содержанию (отдельно администраторы и операторы).
Вот например, у меня есть таблица с пользователями, которую надо подсунуть отчету. Что надо указывать в RegBusinessObject - тип, который формирует EF или непосредственно уже сам набор данных?
Тоесть
Код: Выделить всё
report.RegBusinessObject("MyData", myDataType);
Код: Выделить всё
report.RegBusinessObject("MyData", DataContext.myData.Where(Item => Item.Active == true));
Про сохранение в ресурсах - на форму можно кинуть отчет stiReport, у него в свойствах есть настройка "SaveReportInResources", как я понимаю, включение данного свойства сохраняет все изменения в отчете и после запуска приложения, этот отчет можно спокойно вызывать через метов Show?
Тут же вопрос - если отчет сохраняется, то как мне прописать в него мой объект, чтобы в Designtime я мог его открыть из IDE и там он уже присутствовал?
В идеале мне нужно реализовать следующее:
1. Кинуть отчет на форму (stiReport)
2. Прописать в нем мой бизнес объект (его структуру)
3. На момент показа отчета заполнить ранее определенный в отчете бизнес объект реальными данными по параметрам, выбранным пользователем
4. Показать отчет для каждого из выбранных параметров (что бы все отчеты показывались одновременно)
Отчет один и форма у него будет одна и та же, изменяться будут только сами значения - они будут фильтроваться по параметрам, выбираемым пользователем, например надо показать всех пользователей, имеющих статус администратора или оператора, будет показано две формы отчета одинаковых по форме, но разных по содержанию (отдельно администраторы и операторы).
Создать источник данных по умолчанию
Здравствуйте,
StiReport report = new StiReport();
report.Load("MyReport.mrt");
report.RegBusinessObject("MyData", myData);
report.Design();//или report.Show();
report.Save("MyReport.mrt");
Сам набор данных.Вот например, у меня есть таблица с пользователями, которую надо подсунуть отчету. Что надо указывать в RegBusinessObject - тип, который формирует EF или непосредственно уже сам набор данных?
Второй вариант правильный.ТоестьилиКод: Выделить всё
report.RegBusinessObject("MyData", myDataType);
Код: Выделить всё
report.RegBusinessObject("MyData", DataContext.myData.Where(Item => Item.Active == true));
Все верно. Или перед построением отчета или перед дизайном отчета.Если второй вариант, то значит, регистрировать этот объект мне надо непосредственно перед выполнением отчета?
Можно делать и так, но лучше всеже использовать файлы отчетов. Если вдруг понадобится изменить схему хранения отчетов (к примеру, хранить их в базе данных), то пересохранить отчеты из ресурсов в файлы будет достаточно проблемно.Про сохранение в ресурсах - на форму можно кинуть отчет stiReport, у него в свойствах есть настройка "SaveReportInResources", как я понимаю, включение данного свойства сохраняет все изменения в отчете и после запуска приложения, этот отчет можно спокойно вызывать через метов Show?
С этим есть некоторые проблемы. Обычно, наиболее полную информацию о бизнес-объектах можно получить во время исполнения программы. Самый удобный способ:Тут же вопрос - если отчет сохраняется, то как мне прописать в него мой объект, чтобы в Designtime я мог его открыть из IDE и там он уже присутствовал?
StiReport report = new StiReport();
report.Load("MyReport.mrt");
report.RegBusinessObject("MyData", myData);
report.Design();//или report.Show();
report.Save("MyReport.mrt");
Спасибо.В идеале мне нужно реализовать следующее:
1. Кинуть отчет на форму (stiReport)
2. Прописать в нем мой бизнес объект (его структуру)
3. На момент показа отчета заполнить ранее определенный в отчете бизнес объект реальными данными по параметрам, выбранным пользователем
4. Показать отчет для каждого из выбранных параметров (что бы все отчеты показывались одновременно)
Отчет один и форма у него будет одна и та же, изменяться будут только сами значения - они будут фильтроваться по параметрам, выбираемым пользователем, например надо показать всех пользователей, имеющих статус администратора или оператора, будет показано две формы отчета одинаковых по форме, но разных по содержанию (отдельно администраторы и операторы).
Создать источник данных по умолчанию
Если объект надо регистрировать непосредственно перед показом отчета, то создать отчет в Designtime не представляется возможным, я правильно понимаю?
В самом отчете можно создать бизнес объект искуственно - прописать его структуру вручную в дизайнере. Можно ли заполнить такой искуственно созданный объект позже в Runtime?
В самом отчете можно создать бизнес объект искуственно - прописать его структуру вручную в дизайнере. Можно ли заполнить такой искуственно созданный объект позже в Runtime?
Создать источник данных по умолчанию
Здравствуйте.
Спасибо.
Да.Alkatraz писал(а):Если объект надо регистрировать непосредственно перед показом отчета, то создать отчет в Designtime не представляется возможным, я правильно понимаю?
В принципе возможно. Но лучше в Runtime удалить старый искусственный бизнес-объект и зарегистрировать новый реальный:Alkatraz писал(а):В самом отчете можно создать бизнес объект искуственно - прописать его структуру вручную в дизайнере. Можно ли заполнить такой искуственно созданный объект позже в Runtime?
Код: Выделить всё
report.Load("MyReport.mrt");
report.Dictionary.BusinessObjects.Clear();
report.RegBusinessObject("MyData", myData);
report.Dictionary.SynchronizeBusinessObjects(level);
report.Show();
Создать источник данных по умолчанию
У меня в отчете есть DataBand, привязанный к коллекции бизнес-объектов. После вызова report.Dictionary.BusinessObjects.Clear(); источник DataBand'a сбрасывается (надпись "Не назначено")В принципе возможно. Но лучше в Runtime удалить старый искусственный бизнес-объект и зарегистрировать новый реальный
Создать источник данных по умолчанию
Здравствуйте,
К сожалению, но так и есть. Необходимо заново указать источник данных для бэнда, так как для бизнес объектов используется Guid, а не имя.
Как вариант, перед очисткой сохранить гуид этого бизнес объекта и затем присвоить его заново.
Спасибо.
К сожалению, но так и есть. Необходимо заново указать источник данных для бэнда, так как для бизнес объектов используется Guid, а не имя.
Как вариант, перед очисткой сохранить гуид этого бизнес объекта и затем присвоить его заново.
Спасибо.