Visual Studio C++ 7.0 + Crystal Reports
От: princeandrew Россия  
Дата: 01.12.04 10:28
Оценка:
Здравствуйте.
Работаю в 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
Начал смотреть примеры Кристала, пошарился по форумам — там всё не так (как я понял)
Вообщем не знаю счего начинать или в какую сторону копать.
Помогите, наставьте на путь истенный. Если есть, то можно какой-нибудь примерчик.
Re: Visual Studio C++ 7.0 + Crystal Reports
От: aryb Россия http://alekseyrybakov.narod.ru
Дата: 01.12.04 13:56
Оценка:
Здравствуйте, 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, т.к. дает максимум возможностей по управлению отчетами.
Re[2]: Visual Studio C++ 7.0 + Crystal Reports
От: princeandrew Россия  
Дата: 02.12.04 07:23
Оценка:
Здравствуйте, 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";

PEClosePrintJob(myPrintJob);
PECloseEngine();

f = PEOpenEngine();

myPrintJob = PEOpenPrintJob(ReportPath);
strcpy(logOnInfo.DatabaseName, "RSDU2");
strcpy(logOnInfo.ServerName, "rsdu");
strcpy(logOnInfo.UserID, "имя");
strcpy(logOnInfo.Password, "пароль");
logOnInfo.StructSize = sizeof(PELogOnInfo);

PESetNthTableLogOnInfo(myPrintJob, 0, &logOnInfo, TRUE);

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() должна быть самой первой.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.