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