Исправлено форматирование текста. — SchweinDeBurg
Необходимо использовать: Crystal Report 8, VC++6,
но работать с Report Viewer Control не получается, т.к. там есть только возможность вывести отчет на печать, а нужно чтобы его можно было сохранить, такая возможность есть при использовании API, crpe.h, peplus.h
// SDI
....................
#include "peplus.h"
....................
void CMyprojectView::OnMenuReport1()
{
CRPEngine pEngine;
CRPEJob *m_JobReport;
if(!pEngine.Open())
{ AfxMessageBox("Problem");
return;
}
m_JobReport=pEngine.OpenJob("Report-test.rpt");
if (m_JobReport <= 0)
{
AfxMessageBox("ERROR");
return;
}
CMainFrame *pWnd = dynamic_cast<CMainFrame *>(AfxGetMainWnd());
ASSERT_VALID(pWnd);
if(!m_JobReport->OutputToWindow("Заголовок отчета", 30, 30, 900, 700, 0, pWnd=NULL))
{
AfxMessageBox("No-outputToWindow");
return;
}
if(!m_JobReport->Start())
{
AfxMessageBox("No-start");
return;
}
m_JobReport->Close();
}
При нажатии на кнопку отчет открывается на мгновение, а потом исчезает.
Подскажите, пожалуйста, что я не так делаю.
Если с Report Viewer Control я чтото не так поняла, подскажите есть ли там возможность сохранять отчеты в каком нибудь формате, например word, excel.
Спасибо.
Убедительная просьба — использовать коды форматирования при вставке текстов программ.
[ posted via RSDN@Home 1.1.4 stable SR1 r568, accompanied by Bruce Dickinson — Space Race ]
Извините, буду обращать внимание, я первый раз
Здравствуйте, Kira_, Вы писали:
K_>K_>....................
K_>#include "peplus.h"
K_>....................
K_>void CMyprojectView::OnMenuReport1()
K_>{
K_> .....................
K_> if(!m_JobReport->Start())
K_> {
K_> AfxMessageBox("No-start");
K_> return;
K_> }
K_> m_JobReport->Close();
K_>}
K_>
Если я правильно понял, то
if(!m_JobReport->Start()) открывает отчет (ну или чтото вроде того), а в случае неудачи выводится окно сообщения и сразу выход из процедуры!
А вот в случае удачи вызывается ф-ция
m_JobReport->Close(), которая как мне кажется и закрывает отчет???
И еще вопрос, а
m_JobReport в случае ошибки освобождать не надо???
Это лишь догодка!
Удалено избыточное цитирование. — SchweinDeBurg
Спасибо, я уже разобралась.
Просто
if(!pEngine.Open())
{ AfxMessageBox("Problem");
return;
}
нужно вызывать в
BOOL CMyprodjectApp::InitInstance().
Здравствуйте, TheThief, Вы писали:
TT>Если я правильно понял, то if(!m_JobReport->Start()) открывает отчет (ну или чтото вроде того), а в случае неудачи выводится окно сообщения и сразу выход из процедуры!
TT>А вот в случае удачи вызывается ф-ция m_JobReport->Close(), которая как мне кажется и закрывает отчет???
TT>И еще вопрос, а m_JobReport в случае ошибки освобождать не надо???
Убедительная просьба — следить за объемом цитирования.
[ posted via RSDN@Home 1.1.4 stable SR1 r568, accompanied by silence ]