Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Прорисовка "таблицы" на канве 
:(
    Опции темы
Certain
  Дата 16.9.2008, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 18.6.2008
Где: Moscow

Репутация: 1
Всего: 4



ХЕЛП!
Поставили задачу написать собственный генератор отчетов заточеный под определённую систему (SCADA), соответственно, на входе 2 таблицы!
Возникают сразу 4 вопроса:
1. Как реализовать функцию "Вставить таблицу"( как это сделано ,например, в ворде)?
2. Какой объект в NET брать за объект "листа", куда и будут скидываться объекты будущего отчета (как в Crystal Reports)?
3. Как можно разбить страницу на 3 части??
4. Где и как лучше хранить всю информацию об отчете для будущего изменения/использования?
Если кто-то что-то знает про "подводные камни", логику работы и реализации такого типа программ, буду очень признателен!


--------------------
Работа программиста и шамана имеет много общего - оба боpмочyт непонятные слова, совершают непонятные действия и не могут объяснить, как оно работает.
PM MAIL ICQ   Вверх
Zakonnic
Дата 18.9.2008, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 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), то это немного легче  smile 

Успехов!
--------------------
...и никогда не пишите в комментариях правду
PM MAIL ICQ   Вверх
Certain
Дата 20.9.2008, 02:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 18.6.2008
Где: Moscow

Репутация: 1
Всего: 4



как знал!!! smile Так же все делаю, как Вы и сказали!... Поставлена такая задача, потому что кристал платный, а каждой фирме!, да примерно по 6 АРМ!!! сами понимаете ~ много $! smile хотят своё иметь, приближеннное к своей системе(SCADA), а я пытаюсь сделать "продукт" универсальным... как сделаю, скрины выложу, если интересно! А почему бы и нет, деньги платят, задача очень интересная и нетривиальная (использование 2-х и более разнотипных БД в отчете в виде источников данных, сделал уже, задаётся адрес к БД).... 

Это сообщение отредактировал(а) Certain - 20.9.2008, 02:04
--------------------
Работа программиста и шамана имеет много общего - оба боpмочyт непонятные слова, совершают непонятные действия и не могут объяснить, как оно работает.
PM MAIL ICQ   Вверх
Zakonnic
Дата 21.9.2008, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 25.4.2006

Репутация: 2
Всего: 6



$ - это дааааа... Но есть такая штука "SQL Server 2005/2008 Express with Advanced ​Services". Он мало что бесплатный, так еще и менеджментстудию с Reporting Services содержит. Свой вы год будете делать и лучше промышленного он никак не получится. Посмотрите в эту сторону.

Хотя если платят деньги "за время", то...  smile

ЗЫ. На самом деле я даже не уверен, что для дизайнера локальных отчетов нужен SQL Server, хотя формально RS - его часть.
--------------------
...и никогда не пишите в комментариях правду
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0436 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.