![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Certain |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 235 Регистрация: 18.6.2008 Где: Moscow Репутация: 1 Всего: 4 |
ХЕЛП!
Поставили задачу написать собственный генератор отчетов заточеный под определённую систему (SCADA), соответственно, на входе 2 таблицы! Возникают сразу 4 вопроса: 1. Как реализовать функцию "Вставить таблицу"( как это сделано ,например, в ворде)? 2. Какой объект в NET брать за объект "листа", куда и будут скидываться объекты будущего отчета (как в Crystal Reports)? 3. Как можно разбить страницу на 3 части?? 4. Где и как лучше хранить всю информацию об отчете для будущего изменения/использования? Если кто-то что-то знает про "подводные камни", логику работы и реализации такого типа программ, буду очень признателен! --------------------
Работа программиста и шамана имеет много общего - оба боpмочyт непонятные слова, совершают непонятные действия и не могут объяснить, как оно работает. |
|||
|
||||
| Zakonnic |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 25.4.2006 Репутация: 2 Всего: 6 |
Задачка, конечно, интересная, но есть сомния, что все стоит писать самому. Существует крИстал, другие сторонние генераторы, а также MS Reporting Services (с локальными отчетами в том числе). Создаем в вижуалстудии отчет (.rdl или .rdlc), а на форму кидаем репортвьюер. Уж что-что, а таблички он рисует замечательно.
Ну а если совсем никак, то могу только самые общие советы дать: 1. Делаем базовый класс (например, ReportElement), наследуем от UserControl, добавляем методы LoadFromXML и SaveToXML, где рекурсивно проходимся по дочерним элементам, вызывая их методы SaveToXML, формируя таким образом итоговый отчет, который можно сохранить и загрузить затем через LoadFromXML также рекурсивно восстанавливая состояние контролов. Прописываем здесь другие наследуемые свойства (для связи с данными, например) и вообще базовый API. 2. Создаем кучу контролов, наследованных от базового. В каждом определяем его логику. Надо 3 секции? Заводим контрол MyTableLayout, где каждому подчиненному элементу сопоставляется секция, где он расположен. Ну и соответственно меняем размеры и положение внутренних контролов. Надо объект "листа"? Делаем такой большой белый прямоугольник. Надо таблицу? Выдергиваем из датасета строки и рисуем в OnPaint (мне на подобное понадобилось три недели, и потом еще долго баги вылавливал). Либо втупую юзаем датагрид. 3. Пишем дизайнер, чтобы все это дело создавать. Ну или не пишем, если отчет создается системой, а не людьми. 4. Бодренько и весело придумываем как организовывать печать. Если все контролы рисуют себя сами (в методе Paint), то это немного легче Успехов! --------------------
...и никогда не пишите в комментариях правду |
|||
|
||||
| Certain |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 235 Регистрация: 18.6.2008 Где: Moscow Репутация: 1 Всего: 4 |
как знал!!!
Это сообщение отредактировал(а) Certain - 20.9.2008, 02:04 --------------------
Работа программиста и шамана имеет много общего - оба боpмочyт непонятные слова, совершают непонятные действия и не могут объяснить, как оно работает. |
|||
|
||||
| Zakonnic |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 25.4.2006 Репутация: 2 Всего: 6 |
$ - это дааааа... Но есть такая штука "SQL Server 2005/2008 Express with Advanced Services". Он мало что бесплатный, так еще и менеджментстудию с Reporting Services содержит. Свой вы год будете делать и лучше промышленного он никак не получится. Посмотрите в эту сторону.
Хотя если платят деньги "за время", то... ЗЫ. На самом деле я даже не уверен, что для дизайнера локальных отчетов нужен SQL Server, хотя формально RS - его часть. --------------------
...и никогда не пишите в комментариях правду |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |