Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Crystal Reports / 16 сообщений из 16, страница 1 из 1
20.06.2006, 18:39
    #33803724
KGP
KGP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports
Есть фиксированный перечень отчетов Crystal Reports.

из ASP ... заказывается отчет:
1. По данным клиента создается xml с параметрами
2. Создается COM-объект, ему на вход данные об отчете (код, параметры-xml), он их парсит, запускает создание отчета в Crystal Reports, результат конвертируется в HTML и возвращает его
3. HTML отдается клиенту

Как делали вы? Жизнеспособен ли данный метод, какие +/-?
...
Рейтинг: 0 / 0
20.06.2006, 19:39
    #33803868
Peter Kirillow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports
хоспади !

нет, конечно, можно и так, но, например у нас отчет кристала вызывается примерно так:

http://bo1:8080/businessobjects/billing/billing_details.jsp?id=10808&show=no&rpar0=2005&rpar1=11&rpar2=906mail:from=peter&mail:to=Peter_Kirillow

хочешь покажет результат, хочешь сконвертит в pdf, хочешь по мылу отошлет...

кристал+Tomcat+jsp

версия то какая ?
...
Рейтинг: 0 / 0
21.06.2006, 12:03
    #33804936
KGP
KGP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports
Peter Kirillow
1.

http://bo1:8080/businessobjects/billing/billing_details.jsp?id=10808&show=no&rpar0=2005&rpar1=11&rpar2=906mail:from=peter&mail:to=Peter_Kirillow

2. хочешь покажет результат, хочешь сконвертит в pdf, хочешь по мылу отошлет...

3. кристал+Tomcat+jsp


1. а строку генерит кто?
2. по мылу - идея, хоть и не новая (запишем )
3.
Верно я понял Ваш вариант?
по htlm (страничка заказа отчетов)
jsp создает COM-объект, запускает отчет, передав фиксированные параметры и отправляет и/или показывает результат.
один jsp - один отчет в Crystal Reports?

ps: я хотел уточнить об опыте создания прослойки вызова отчета по названию с передачей неких параметров (XML данные, удовлетноряющие соответствующей отчету схеме)
...
Рейтинг: 0 / 0
21.06.2006, 13:41
    #33805454
KGP
KGP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports
Crystal Reports сохраняет отчеты (не результаты) в виде xml?
Тогда можно былобы из него попробовать получить схему, описывающую требования к параметрам.
...
Рейтинг: 0 / 0
21.06.2006, 15:00
    #33805870
Peter Kirillow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports
я так понял у вас неофициальный Кристал и версии ниже 10...

отчеты генерит сервер Business Objects
в jsp я передаю ID отчета (для версии кристал 11) или имя отчета, если версия ниже, а потом просто использую API для вызова отчета и перадачи в него параметров из строки URL.

никаких COM объектов не нужно, если используется java.

вам надо читать про API для версии, которую вы используете.

вот пример:


<%@ page contentType="text/html; charset=windows-1251" pageEncoding="windows-1251" %>
<%@ page import = "java.util.*,java.lang.Integer,java.io.*,
com.crystaldecisions.sdk.framework.*,
com.crystaldecisions.sdk.plugin.desktop.report.*,
com.crystaldecisions.sdk.plugin.destination.smtp.*,
com.crystaldecisions.sdk.plugin.desktop.common.*,
com.crystaldecisions.sdk.exception.*,
com.crystaldecisions.sdk.occa.security.*,
com.crystaldecisions.sdk.properties.*,
com.crystaldecisions.sdk.occa.infostore.*"
%>

<%
try
{
request.setCharacterEncoding("Cp1251");

//Log in.
IEnterpriseSession enterpriseSession = CrystalEnterprise.getSessionMgr().logon( "billing", "bee_billing", "bo1", "secEnterprise");
//Obtain the InfoStore.
IInfoStore infoStore = (IInfoStore)enterpriseSession.getService("", "InfoStore");

//Query for the report object in the CMS. See the Developer Reference guide for more information the query language.
IInfoObjects oInfoObjects = (IInfoObjects)infoStore.query("SELECT TOP 1 * FROM CI_INFOOBJECTS " +
"WHERE SI_PROGID = 'CrystalEnterprise.Report' AND SI_INSTANCE=0 AND " +
"SI_ID=" + request.getParameter ("id"));
IReport oReport = (IReport)oInfoObjects.get(0);

if (oInfoObjects.size() > 0)
{
scheduleReports(oInfoObjects, infoStore, request);
out.println("<result>");
out.println("<text>отчет сформирован и отправлен по адресу - " + request.getParameter("mail:to") + "</text>");
out.println("</result>");
}
else
{
out.println("<result>");
out.println("<text>нет данных для создания репорта за указанный период</text>");
out.println("</result>");
}

enterpriseSession.logoff();

} catch(SDKException sdkEx) {
out.println("<error>");
out.println("<ErrorCode>1</ErrorCode>");
out.println("<ErrorText><![CDATA[" + sdkEx.getMessage() + "]]></ErrorText>");
out.println("</error>");
}
%>

<%!
private void scheduleReports(IInfoObjects oInfoObjects, IInfoStore infoStore, HttpServletRequest request) throws SDKException, IOException {

//Grab the first object in the collection, this will be the object that will be scheduled.
IReport oReport = (IReport)oInfoObjects.get(0);
IReportFormatOptions reportFormat = oReport.getReportFormatOptions();

//Set report format.
reportFormat.setFormat(IReportFormatOptions.CeReportFormat.PDF);
IDestinationPlugin destinationPlugin = getDestinationPlugin(infoStore, IReportFormatOptions.CeReportFormat.PDF, oReport.getTitle(), request);

//Set parameters for this report.
setReportParameters(oReport, request);

//Retrieve the ISchedulingInfo Interface for the Report object and set the schedule time (right now) and type (run once)
ISchedulingInfo schedInfo = oReport.getSchedulingInfo();
schedInfo.setRightNow(true);
schedInfo.setType(CeScheduleType.ONCE);

//Retrieve the IDestination interface from the SchedulingInfo object use the setFromPlugin()
//to apply the changes we made to the IDestinationPlugin object returned from the IStore
IDestination destination = schedInfo.getDestination();

if (null != request.getParameter("mail:to"))
destination.setFromPlugin(destinationPlugin);

destination.setCleanup(true);

//Schedule the InfoObjects.
infoStore.schedule(oInfoObjects);
}
%>

<%!
private void setReportParameters(IReport oReport, HttpServletRequest request) throws SDKException, IOException {
// Retrieve the list of parameters on the report
List paramList = oReport.getReportParameters();

// Create an IReportParameter interface
IReportParameter oReportParameter;
IReportParameterSingleValue currentValue = null;

//For each parameter in the report, set a parameter value appropriate for the parameter type prior to scheduling.
for (int i=0; i < paramList.size(); i++)
{
oReportParameter = (IReportParameter)paramList.get(i);
oReportParameter.getCurrentValues().clear();

String sRepParm = request.getParameter ("rpar" + i);
currentValue = oReportParameter.getCurrentValues().addSingleValue();

if (null == sRepParm) sRepParm = "false";
currentValue.setValue(sRepParm);
}
}
%>

<%!
/*
* Utility function for obtain the appropriate destination plugin and set options for that plugin.
*/
private IDestinationPlugin getDestinationPlugin(IInfoStore infoStore, int reportType, String sFileName, HttpServletRequest request) throws SDKException {

String mimeType = getMimeType(reportType);
String sParms = "";

//Retrieve the SMTP Destination plugin from the InfoStore
//this should be cast as an IDestinationPlugin *DON'T FORGET THE get(0) AT THE END**
IDestinationPlugin destPlugin = (IDestinationPlugin)infoStore.query("SELECT TOP 1 * " +
"FROM CI_SYSTEMOBJECTS " +
"WHERE SI_NAME='CrystalEnterprise.Smtp'").get(0);

//Retrieve the Scheduling Options and cast it as ISMTPOptions
//This interface is the one which allows us to set all of the required SMTP properties
ISMTPOptions smtpOptions = (ISMTPOptions) destPlugin.getScheduleOptions();
smtpOptions.setDomainName("troika.ru");
smtpOptions.setServerName("magician");
smtpOptions.setPort(25);
smtpOptions.setSMTPUserName("");
smtpOptions.setSMTPPassword("");
smtpOptions.setSMTPAuthenticationType(ISMTPOptions.CeSMTPAuthentication.NONE);

sParms = request.getParameter("mail:from");
if (sParms == null) sParms = "billing_master@troika.ru";
smtpOptions.setSenderAddress(sParms.replace(' ','_'));

smtpOptions.setSubject(request.getParameter("mail:subject"));
smtpOptions.setMessage(request.getParameter("mail:body"));

//Retrieve the list of SMTP recipients.
sParms = request.getParameter("mail:to");
if (sParms != null) smtpOptions.getToAddresses().add(sParms.replace(' ','_'));

sParms = request.getParameter("mail:cc");
if (sParms != null) smtpOptions.getCCAddresses().add(sParms.replace(' ','_'));

//Retrieve the IAttachments Interface then use the add() method to add the mimetype and the embedName of the attachment.
IAttachments attachments = smtpOptions.getAttachments();
attachments.add(mimeType, "BeeLine_details_" + request.getParameter ("rpar1") + request.getParameter ("rpar0") + ".pdf");

return destPlugin;
}
%>

<%!
/*
* Utility function that returns the file extension for an export format type.
*/
private String getMimeType(int reportType) {

String mimeType = "";

switch (reportType) {
case IReportFormatOptions.CeReportFormat.CRYSTAL_REPORT:
mimeType = "application/report";
break;
case IReportFormatOptions.CeReportFormat.EXCEL:
mimeType = "application/vnd.ms-excel";
break;
case IReportFormatOptions.CeReportFormat.EXCEL_DATA_ONLY:
mimeType = "application/vnd.ms-excel";
break;
case IReportFormatOptions.CeReportFormat.PDF:
mimeType = "application/pdf";
break;
case IReportFormatOptions.CeReportFormat.RTF:
mimeType = "application/msword";
break;
case IReportFormatOptions.CeReportFormat.RTF_EDITABLE:
mimeType = "application/msword";
break;
case IReportFormatOptions.CeReportFormat.TEXT_CHARACTER_SEPARATED:
mimeType = "application/vnd.ms-excel";
break;
case IReportFormatOptions.CeReportFormat.TEXT_PAGINATED:
mimeType = "text/plain";
break;
case IReportFormatOptions.CeReportFormat.TEXT_PLAIN:
mimeType = "text/plain";
break;
case IReportFormatOptions.CeReportFormat.TEXT_TAB_SEPARATED:
mimeType = "text/plain";
break;
case IReportFormatOptions.CeReportFormat.TEXT_TAB_SEPARATED_TEXT:
mimeType = "text/plain";
break;
case IReportFormatOptions.CeReportFormat.USER_DEFINED:
mimeType = "";
break;
case IReportFormatOptions.CeReportFormat.WORD:
mimeType = "application/msword";
break;
default:
mimeType = "application/report";
break;
}
return mimeType;
}
%>
...
Рейтинг: 0 / 0
20.08.2006, 14:17
    #33930774
Wireless
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports
Peter Kirillow<%!
private void setReportParameters(IReport oReport, HttpServletRequest request) throws SDKException, IOException {
// Retrieve the list of parameters on the report
List paramList = oReport.getReportParameters();

// Create an IReportParameter interface
IReportParameter oReportParameter;
IReportParameterSingleValue currentValue = null;

//For each parameter in the report, set a parameter value appropriate for the parameter type prior to scheduling.
for (int i=0; i < paramList.size(); i++)
{
oReportParameter = (IReportParameter)paramList.get(i);
oReportParameter.getCurrentValues().clear();

String sRepParm = request.getParameter ("rpar" + i);
currentValue = oReportParameter.getCurrentValues().addSingleValue();

if (null == sRepParm) sRepParm = "false";
currentValue.setValue(sRepParm);
}
}
%>

такая функция setReportParameters() насколько я понимаю специфична для окружения Reports Serverа, а если только Java Reporting Component использовать, то такой интерфейс задания параметров отчету уже не подходит?
...
Рейтинг: 0 / 0
24.08.2006, 13:05
    #33939968
KGP
KGP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports
Peter Kirillow
1. я так понял у вас неофициальный Кристал и версии ниже 10...
2. отчеты генерит сервер Business Objects
3. никаких COM объектов не нужно, если используется java.
IReport oReport = (IReport)oInfoObjects.get(0);


1. trial 9
2. я через ActiveX родной компонент - вьювер
3. ошибаетесь ... по коду видно, что скриптом COM-объект используется

Дело в том, что вы получаете заранее зная что за отчет, а я хотял в отчете идентификацию в описание как xml записать и парсить перед запуском ...
...
Рейтинг: 0 / 0
25.07.2007, 10:11
    #34682166
guesty
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports
KGPCrystal Reports сохраняет отчеты (не результаты) в виде xml?
Тогда можно былобы из него попробовать получить схему, описывающую требования к параметрам.

Crystal Reports сохраняет только результаты. Для создания шаблонов на XML используем iReport.
...
Рейтинг: 0 / 0
26.07.2007, 07:44
    #34684527
guesty
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports
Кстати, никто не пробовал делать XML-отчеты в Кристал Репортс ?
...
Рейтинг: 0 / 0
15.08.2007, 13:38
    #34729333
Paty_dj
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports
раньше формировали отчеты с помошью iReport. сам проект сохранялся в виде xml файла.

сейчас встал вопрос перехода с iReport на Cristal Report 10 с тем же условием, что проекты будут сохранятся в формате xml.

только вот столкнулись с проблемой, не можем найти как сохранить проект в кристале в формате xml или такой возможности попросту нет, и нам надо искать другие пути?
...
Рейтинг: 0 / 0
15.08.2007, 13:57
    #34729417
Wireless
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports
Может сохранять в HTML, или в своем собственном (бинарном) формате.
...
Рейтинг: 0 / 0
15.08.2007, 14:16
    #34729495
Paty_dj
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports
я попробую, только от нас требуют xml

судя по всему отчеты кристала можно использовать, как отдельные программки, и запускать простым нажатием мышки.
...
Рейтинг: 0 / 0
15.08.2007, 14:48
    #34729623
guesty
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports
2 Wireless: Что Вы имеете ввиду под "сохранять в HTML" ?
...
Рейтинг: 0 / 0
15.08.2007, 18:45
    #34730611
Wireless
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports
Guesty2 Wireless: Что Вы имеете ввиду под "сохранять в HTML" ?
Имелось ввиду выходные данные отчета возможно сохранять в HTML.
Мне не известно, чтобы само представления отчета (относительно вопроса panty_dj) могло бы быть сохранено в XML.
...
Рейтинг: 0 / 0
16.08.2007, 07:46
    #34731134
Paty_dj
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports
Wireless спасибо


может быть есть ссылки на электронную литературу по Crystal? Если есть заделитесь п-та
...
Рейтинг: 0 / 0
16.08.2007, 14:05
    #34732407
strelok47
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports
я дико извиняюсь, но как узнать id отчета? при условии что отчет в репозитории
...
Рейтинг: 0 / 0
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Crystal Reports / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]