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]
Вложенные файлы
# |
Название |
Тип файла |
Размер |
---|---|---|---|
1 | 586crystal9 | .zip | 12,71 КБ |