Использование Crystal Reports в Visual Studio 2005 (приложение Windows.NET C#)

[g1] Следующее решение появилось, когда я заметил параметр $ break функции [g0] wordwrap [/g0]: [/g1]
[g2] string wordwrap (string $ str [, int $ width = 75 [, string $ break = "\n" [, bool $ cut = false]]]) [/g2] [g3] Вот решение: [/g3] [f1] [g4] Пример # 1. [/G4] [f2] [g5] Приведенный выше пример выдаст: [/g5] [f3] [g6] Пример # 2. [/G6] [f4] [g7] Приведенный выше пример выдаст: g7] [f5]
9
задан Piku 2 October 2008 в 21:09
поделиться

7 ответов

Мне удалось сделать эту работу теперь.

Краткий обзор

Это работает при наличии 'класса данных', который является просто регулярным содержащим класса C# переменные и никакой код. Это затем инстанцируют и заполняют данными и затем помещают в ArrayList. ArrayList связывается со средством просмотра отчета, наряду с названием отчета загрузиться. В конструкторе отчетов '.Net Объекты используются, вместо того, чтобы общаться с базой данных.

Объяснение

Я создал класс для содержания данных для моего отчета. Этот класс вручную заполнен мной путем ручного получения данных из базы данных. Как Вы делаете это не имеет значения, но здесь является примером:

DataSet ds = GeneratePickingNoteDataSet(id);
foreach (DataRow row in ds.Tables[0].Rows) {
    CPickingNoteData pickingNoteData = new CPickingNoteData();

    pickingNoteData.delivery_date = (DateTime)row["delivery_date"];
    pickingNoteData.cust_po = (int)row["CustomerPONumber"];
    pickingNoteData.address = row["CustomerAddress"].ToString();
    // ... and so on ...

    rptData.Add(pickingNoteData);
}

Класс затем помещается в ArrayList. Каждый элемент в arraylist соответствует одной 'строке' в законченном отчете.

Первый элемент в списке может также содержать данные заголовка отчета, и последний элемент в списке может содержать данные нижнего колонтитула отчета. И потому что это - ArrayList, нормальный Доступ к массиву может использоваться для достигания их:

((CPickingNoteData)rptData[0]).header_date = DateTime.Now;
((CPickingNoteData)rptData[rptData.Count-1]).footer_serial = GenerateSerialNumber();

После того как Вы имеете arraylist полные из данных, связываете их с Вашим средством просмотра отчета как это, где 'rptData' имеет тип 'ArrayList'

ReportDocument reportDoc = new ReportDocument();
reportDoc.Load(reportPath);
reportDoc.SetDataSource(rptData);
crystalReportViewer.ReportSource = reportDoc;

Теперь необходимо будет связать класс данных с самим отчетом. Вы делаете эту внутреннюю часть разработчик:

  1. Откройте вкладку Field Explorer (который мог бы находиться под меню 'View'), и щелкните правой кнопкой по "Database Fields"
  2. Нажмите на 'Project Data'
  3. Нажмите на '.NET Objects'
  4. Прокрутите список вниз для нахождения класса данных (если это не там, скомпилируйте приложение),
  5. Нажмите'>>' и затем хорошо
  6. Можно теперь перетащить участников класса на отчет и расположить их, как Вы хотите.
4
ответ дан 4 December 2019 в 15:28
поделиться

Кристалл является одним возможным вариантом для создания отчетов. Это было около долгого времени, и большому количеству людей, кажется, нравится он.

Вы могли бы хотеть смотреть на услуги по созданию отчетов SQL. Я использовал обоих, но мое предпочтение является услугами по созданию отчетов SQL. Его вполне прилично интегрированный в студию и работы, подобные другим проектам Microsoft. Его также свободный с sql выражают и т.д.

Это - хорошая статья в начале, сообщая о сервисах: http://www.simple-talk.com/sql/learn-sql-server/beginning-sql-server-2005-reporting-services-part-1/

3
ответ дан 4 December 2019 в 15:28
поделиться

Можно использовать средство просмотра отчета с клиентским созданием отчетов, встроенным в vs.net (управление ReportBuilder/ReportViewer). Можно создать, сообщает тот же путь, поскольку Вы делаете для sql создание отчетов, что для сервисов, кроме Вас не нужен SQL-сервер (ни asp.net). Плюс Вы имеют полный контроль над ними (как Вы представляете, как Вы собираете данные, в каком слое они сгенерированы, что Вы делаете с ними после генерации, такой как отправка по почте их, отправка в ftp, и т.д.). Можно также экспортировать как PDF и Excel.

И в Вашем случае, создающем отчет от данных и ввода данных пользователем, это может работать отлично, поскольку можно создать собственный источник данных и данные, как Вы продвигаетесь. После того как Ваши данные готовы быть сообщенными относительно, связать его с Вашим отчетом.

Отчеты могут легко быть созданы в Visual Studio 2005 (Добавьте отчет своему проекту), и быть показанным в приложении Winforms с помощью управления ReportViewer.

Вот замечательная книга, на которую я рекомендую всем посмотреть, если заинтересовано клиентскими отчетами. Это дает много большой информации и многих различных сценариев и способов использовать клиентское создание отчетов.

http://www.apress.com/book/view/9781590598542

2
ответ дан 4 December 2019 в 15:28
поделиться

У меня рекомендация второго alex посмотреть на sql создание отчетов о сервисах - если Вы сделали, чтобы sql разработчик лицензировал, затем Вы, вероятно, уже, есть услуги по созданию отчетов

мне не нравятся кристаллические отчеты, слишком много скуки в разработчике (редактирующий выражения все время) слишком много проблем развертывания серверов (проверьте те файлы лицензии!)

1
ответ дан 4 December 2019 в 15:28
поделиться

Я нашел, что следующие веб-сайты решили мои проблемы. Включенный здесь для дальнейшего использования.

Учебные руководства по Объектной модели CrystalReportViewer для учебного руководства о том, как заставить все это работать. И также Настраивая проект использовать Crystal Reports и конкретно готовя форму и добавляя управление

1
ответ дан 4 December 2019 в 15:28
поделиться

Я использую Crystal. Я буду обрисовывать в общих чертах свой метод кратко, но знать, что я - один магазин человека, и он не может перевести в Вашу среду.

Во-первых, создайте форму со Средством просмотра CR. Затем:

1) Фигура, в каких данных Вы нуждаетесь и создаете представление, которое получает требуемые столбцы. 2) Создайте новый отчет Crystal с помощью мастера, высказывающего мнение как источник данных. 3) Перетащите, отбросьте, вставьте, удалите, и безотносительно к грубо Вашему отчету в форму. Да, это утомительно. 4) Создайте необходимое нажатие кнопки и создайте функцию, в которой можно генерировать отчет. 5) Получите данные к DataTable (вероятно, в DataSet). Вы не должны использовать представление. 6) Создайте объект отчета. Установите DataTable, чтобы быть DataSource. Присвойте объект отчета Средству просмотра CR. Это - одна часть, для которой существуют примеры.

Комментарии:

При потере окна с полями базы данных, и т.д. (Полевой Проводник), пойдите для Просматривания/Документирования Схемы. (Это - моя фантазия, чтобы иметь Bill Gates на этапе и попросить, чтобы он нашел его.)

Причина установки представления состоит в том, что, если Вы хотите добавить столбец, Вы пересматриваете представление, и Полевой Проводник обновит автоматически. У меня были все виды проблемы, делающей его другие пути. Этот метод также является обходным решением для ошибки, которая требует сканирования посредством всего сброса таблиц, на какую таблицу они указывают. Вы хотите вручить Crystal единственную таблицу. Вы не хотите пытаться получить Crystal к объединяющим таблицам и т.д. Я не говорю, что это не работает; я говорю, что это более твердо.

Существует (или был), документация для реализации VS Кристалла на веб-сайте Бизнес-объектов, но я полагаю, что это исчезло позади экрана регистра/входа в систему. (Я мог стоять больше информации об этом сам.)

Я испытал затруднения при получении Crystal к разрыву страницы, когда я хочу, и не разрыв страницы, когда я не хочу и т.д. Это далеко от лучшего генератора отчетов, который я когда-либо использовал, и я не понимаю, почему это, кажется, разорило столь многих других. Кроме того, их лицензирование политик является очень трудным иметь дело с в небольшой, жидкой организации.

Отредактированный для добавления примера:

AcctStatement oRpt = new AcctStatement() ;
oRpt.Database.Tables[0].SetDataSource(dsRpt.Tables[0]);
oRpt.SetParameterValue("plan_title",sPlanName) ;
crViewer.ReportSource = oRpt ;
1
ответ дан 4 December 2019 в 15:28
поделиться

Я настоятельно рекомендую пробовать решение для создания отчетов альтернативы - я имею большой опыт с Crystal и сумел сделать некоторые броские вещи с ним в .NET, но вполне честно интеграция Crystal и .NET является абсолютной свиньей для чего-либо кроме самых простых случаев.

0
ответ дан 4 December 2019 в 15:28
поделиться