Здравствуйте.
Работаю в Visual Studio.NET 2003 + Crystal Reports 9.0.
Crystal Reports 9.0 лицензионный. Установил Crystal Reports 9.0 Developmers Edition.
о никогда не работал с этим приложением.
Что собственно надо:
Есть отчеты созданные в Кристале и связанные с БД запросами.
Необходимо написать приложение, которое просто будет открывать эти отчеты с параметрами.
Это приложение будет выполняться на других компах, то есть програ должна быть как-то переносима (то
есть с некоторых количеством ДЛЛ или совсем без них).
Проблема в том, что я не знаю с чего начать. Как подступиться к Кристалу из VC7.0.
В старой проге было реализованно через
CRPEJob *printJob = NULL;
theApp.printEngine.OpenJob(LPCTSTR(strFNameRpt))
и т. д.
Использовался crpe32m.lib
Начал смотреть примеры Кристала, пошарился по форумам — там всё не так (как я понял)
Вообщем не знаю счего начинать или в какую сторону копать.
Помогите, наставьте на путь истенный. Если есть, то можно какой-нибудь примерчик.
Здравствуйте, princeandrew, Вы писали:
P>Проблема в том, что я не знаю с чего начать. Как подступиться к Кристалу из VC7.0. P>В старой проге было реализованно через P>CRPEJob *printJob = NULL; P>theApp.printEngine.OpenJob(LPCTSTR(strFNameRpt)) P>и т. д. P>Использовался crpe32m.lib P>Начал смотреть примеры Кристала, пошарился по форумам — там всё не так (как я понял) P>Вообщем не знаю счего начинать или в какую сторону копать. P>Помогите, наставьте на путь истенный. Если есть, то можно какой-нибудь примерчик.
В Crystal входит специальный help для разработчиков (CrystalDevHelp.chm), в котором как раз и написано про это.
Есть crpe.h (если писать на C), а в старых версиях (в 8-ке точно) были еще классы (в т.ч. CRPEJob).
По-моему, самый надежный способ — использовать crpe.h, т.к. дает максимум возможностей по управлению отчетами.
Здравствуйте, aryb, Вы писали:
A>В Crystal входит специальный help для разработчиков (CrystalDevHelp.chm), в котором как раз и написано про это. A>Есть crpe.h (если писать на C), а в старых версиях (в 8-ке точно) были еще классы (в т.ч. CRPEJob). A>По-моему, самый надежный способ — использовать crpe.h, т.к. дает максимум возможностей по управлению отчетами.
Спасибо, копаю в этом направлении. Только вот у меня стоит CR 9.0 в нем я не нашёл класс CRPEJob.
Чё я делаю:
1. Создаю проект на основе диалога — и ОК (все настройки по умолчанию)
2. В свойстав VC++ прописаны пути до C:\Program Files\Crystal Decisions\Crystal Reports 9\Developer Files\include
...\lib
3. В stdafx.h подключаю "crpe.h"
4. Создаю кнопку и обработчик для неё:
/*******************************************************/
SHORT myPrintJob = 0;
PEBOOL f = FALSE;
PELogOnInfo logOnInfo;
const char FAR ReportPath[256] = "D:\\Test.rpt";
f = PEOutputToWindow(myPrintJob, "Example", 10, 10, 400, 500, WS_CHILD | WS_VISIBLE, GetSafeHwnd());
f = PEStartPrintJob(myPrintJob, FALSE);
PECloseEngine();
/*******************************************************/
5. Так вот на самой первой функции f = PEOpenEngine(); — f — 0. И все последующие функции возвращают 0.
—
В чем может быть косяк?
Re[3]: Visual Studio C++ 7.0 + Crystal Reports
От:
Аноним
Дата:
03.12.04 09:26
Оценка:
Здравствуйте, princeandrew, Вы писали:
P>Здравствуйте, aryb, Вы писали:
A>>В Crystal входит специальный help для разработчиков (CrystalDevHelp.chm), в котором как раз и написано про это. A>>Есть crpe.h (если писать на C), а в старых версиях (в 8-ке точно) были еще классы (в т.ч. CRPEJob). A>>По-моему, самый надежный способ — использовать crpe.h, т.к. дает максимум возможностей по управлению отчетами.
P>Спасибо, копаю в этом направлении. Только вот у меня стоит CR 9.0 в нем я не нашёл класс CRPEJob. P>Чё я делаю: P>1. Создаю проект на основе диалога — и ОК (все настройки по умолчанию) P>2. В свойстав VC++ прописаны пути до C:\Program Files\Crystal Decisions\Crystal Reports 9\Developer Files\include P>...\lib P>3. В stdafx.h подключаю "crpe.h" P>4. Создаю кнопку и обработчик для неё: P>/*******************************************************/ P> SHORT myPrintJob = 0; P> PEBOOL f = FALSE; P> PELogOnInfo logOnInfo; P> const char FAR ReportPath[256] = "D:\\Test.rpt";
P> PEClosePrintJob(myPrintJob); P> PECloseEngine();
P> f = PEOpenEngine();
P> myPrintJob = PEOpenPrintJob(ReportPath); P> strcpy(logOnInfo.DatabaseName, "RSDU2"); P> strcpy(logOnInfo.ServerName, "rsdu"); P> strcpy(logOnInfo.UserID, "имя"); P> strcpy(logOnInfo.Password, "пароль"); P> logOnInfo.StructSize = sizeof(PELogOnInfo);
P> PESetNthTableLogOnInfo(myPrintJob, 0, &logOnInfo, TRUE);
P> f = PEOutputToWindow(myPrintJob, "Example", 10, 10, 400, 500, WS_CHILD | WS_VISIBLE, GetSafeHwnd()); P> f = PEStartPrintJob(myPrintJob, FALSE); P> PECloseEngine(); P>/*******************************************************/ P>5. Так вот на самой первой функции f = PEOpenEngine(); — f — 0. И все последующие функции возвращают 0. P>- P>В чем может быть косяк?
Думаю, что функция PEOpenEngine() должна быть самой первой.