Я использую Кристалл. Я кратко опишу свой метод, но имейте в виду, что я работаю в одиночку, и это может не соответствовать вашей среде.
Сначала создайте форму с помощью средства просмотра CR. Затем:
1) Выясните, какие данные вам нужны, и создайте представление, которое извлекает нужные столбцы. 2) Создайте новый отчет Crystal с помощью мастера, указав свое представление в качестве источника данных. 3) Перетаскивайте, опускайте, вставляйте, удаляйте и делайте что угодно, чтобы привести отчет в форму. Да, это утомительно. 4) Создайте необходимое нажатие кнопки или что-то еще и создайте функцию, в которой будет генерироваться отчет. 5) Получить данные в DataTable (возможно, в DataSet). Вам не обязательно использовать представление. 6) Создайте объект отчета. Установите DataTable в качестве источника данных. Назначьте объект отчета средству просмотра CR. Это одна часть, для которой есть примеры.
Комментарии:
Если вы потеряете окно с полями базы данных и т.д. (Field Explorer), перейдите в View/Document Outline. (Моя мечта — вызвать Билла Гейтса на сцену и попросить его найти ее.)
Причина настройки представления заключается в том, что если вы хотите добавить столбец, вы пересматриваете представление, и обозреватель полей автоматически обновляется. У меня были всевозможные проблемы, делая это другими способами. Этот метод также является обходным путем для ошибки, требующей сканирования всех таблиц и сброса таблицы, на которую они указывают. Вы хотите отдать Кристал один стол. Вы не хотите пытаться заставить Crystal соединять столы и т. д. Я не говорю, что это не работает; Я говорю, что это сложнее.
Документация по реализации Crystal для VS есть (или была) на веб-сайте Business Objects, но я считаю, что она исчезла за экраном регистрации/входа. (Я мог бы получить больше информации об этом сам.)
У меня были проблемы с получением Crystal разрыва страницы, когда я хочу, а не разрыва страницы, когда я не хочу, и т. д. Это далеко не лучший генератор отчетов, который я когда-либо использовал, и я не понимаю, почему он, кажется, поставил так много других из бизнеса. Кроме того, их политика лицензирования очень сложна в работе в небольшой динамично развивающейся организации.
Отредактировано, чтобы добавить пример:
AcctStatement oRpt = new AcctStatement() ;
oRpt.Database.Tables[0].SetDataSource(dsRpt.Tables[0]);
oRpt.SetParameterValue("plan_title",sPlanName) ;
crViewer.ReportSource = oRpt ;
person
SeaDrive
schedule
02.10.2008