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