Работа с Crystal Reports 9

Доработанное решение №508. Работать с классом по прежнему просто, но добавлены дополнительные методы + параметры вызова + исправлена неточность + возможность выбора принтера.
Проблемы старого класса:
1. Если использовать для работы с MS SQL - нет вопросов,
в самом отчете устанавливатся свойства подключения и все работает.
А вот если работать с локальными таблицами - вытаскивать данные в файлы fox2x,
то тут уж лучше указывать полные пути к этим самым таблицам. Поэтому в класс
добавлены методы установки путей к таблицам отчета oCR.addtable и путей к
таблицам подотчетов oCR.addsubtable.

2. Все начинается с создания объекта класса:
oCR=CREATEOBJECT('CrystalRuntime.Application'). Я долго не мог понять,
почему это при помощи этого класса именно отчеты для CR9 не хотят работать.
При этом отчеты для CR8.5 работают на ура. А все просто: если у вас на
машине стоит не одна версия CR, а несколько, то в реестре запись
'CrystalRuntime.Application' связывается с той версией CR, которая была
установлена раньше всех. Так у меня создавался класс CR8.5, который не
понимал отчетов, сделанных в CR9, о чем громко и кричал. Проблема решается
добавлением номера версии CR через точку:'CrystalRuntime.Application.9'.
При таком вызове мы гарантированно получим экземпляр CR9.

3. У меня всегда в начаде программы создается класс приложения. В этом классе
задается иконка приложения. И вот когда ты вызываешь на просмотр отчет -
у него в левом углу стандартная фоксовая иконка и надпись "Отчет".
Ну не очень как-то смотрится. Поэтому в класс добавлены необязательные параметры.
Первый задает текст в заголовке окна, второй - иконку.

4. Последние изменения: Очень меня смущала такая весчь в вьювере для CR9, как отсутсвие возможности выбора и настройки принтера. Сделать на форме отдельную кнопку для этого? Не проблема. Только проблема в том, что эта единственная кнопка для выбора принтера на форме смотрится как 5-е колесо у телеги. Поэтому сделал свою менюшку для управления просмотром. Те, для кого не критично отсутствие кнопки выбора принтера - могут пользоваться родными контролами. Для этого нужно как и раньше oCR=CREATEOBJECT('myCR9','Отчет №1','d:print.gif'). Те, кто хотят видеть кнопку - добавьте после файла с иконкой .t. (типа ShowControls) oCR=CREATEOBJECT('myCR9','Отчет №1','d:print.gif', .t.). Конкретно этот класс сделан на 9-ке. Но раньше он же использовался на 6-ке для работы с CR.
[code]
SET CLASSLIB TO crystalrep9 ADDITIVE
PUBLIC oCR

&& первый параметр - текст шапки окна просмотра, второй - файл иконки,
третий - показывать новые контролы или родные
oCR=CREATEOBJECT('myCR9','Отчет №1','d:print.gif',.t.)

&& теперь устанавливаем параметры отчета
&& в первом случае, если мы сами передаем параметр для самого CR
oCR.addparam('CompanyName','Иванов Лтд.')

&& второй случай - если передаем значение для процедуры MS SQL
oCR.addparam('@Number','33')

&& первый параметр - номер таблицы в отчете, второй - полное название файла
&& с данными с полным путем к нему
oCR.addtable(1,oApp.TempPath+'crrOrder1.dbf')

&& первый параметр - название подотчета, второй - номер таблицы в подотчете,
&& третий - полное название файла с данными с полным путем к нему
oCR.addsubtable('22',1,oApp.RepPath+'crrOrder2.dbf')

oCR.previewreport('d:repReport.rpt')
[/code]

Автор: lo-pata

Автор публикации

не в сети 16 лет

lo-pata

0
Комментарии: 0Публикации: 1Регистрация: 08-02-2005
0
Вложенные файлы
#
Тип файла
Размер
Название
1 .zip 12,71 КБ 586crystal9
Оставить комментарий
Авторизация
*
*
Регистрация
*
*
*
Пароль не введен
*
Генерация пароля