crystal report 水晶报表 可以直接在Java application

问题描述

crystal report 水晶报表 可以直接在Java application

现在做个项目需要在Java application 中直接调用crystal report的API ,不用JNDI的方式链接数据库,不用JSP,就是说直接在Java application 的main方法里面去实现crystal report的链接数据库更能,请问有什么办法吗?

以下是我通过JNDI的方法实现的代码,可以正常运行,现在求不用JNDI的方法:
public void runReportUsingSql() throws Exception {
String jndiName ="fams_system";
String reportPath ="C:/MyDevelopTools/FARMS/WebApp/WebContent/reporting/wizard/AT020.RPT";
final String sql="SELECT SYSTEM_TYPE_MSTR.ID_TYPE, SYSTEM_TYPE_MSTR.DESC_TYPE, SYSTEM_TYPE_MSTR.NOTE_TYPE, SYSTEM_TYPE_MSTR.NAME_SUPR, SYSTEM_CLAS_MSTR.ID_CLAS, SYSTEM_CLAS_MSTR.DESC_CLAS, SYSTEM_CLAS_MSTR.NOTE_CLAS, SYSTEM_CLAS_MSTR.ID_PARA, SYSTEM_CLAS_MSTR.CODE_AUTH, SYSTEM_CLAS_MSTR.CODE_XREF FROM FAMSADMN.SYSTEM_TYPE_MSTR SYSTEM_TYPE_MSTR, FAMSADMN.SYSTEM_CLAS_MSTR SYSTEM_CLAS_MSTR WHERE SYSTEM_TYPE_MSTR.ID_TYPE = SYSTEM_CLAS_MSTR.ID_TYPE AND SYSTEM_TYPE_MSTR.ID_TYPE = 'MEMBER' AND SYSTEM_CLAS_MSTR.ID_CLAS IN ('DADADADA') ORDER BY SYSTEM_CLAS_MSTR.ID_CLAS ASC, SYSTEM_TYPE_MSTR.ID_TYPE ASC FOR FETCH ONLY";

    reportClientDoc.setReportAppServer(ReportClientDocument.inprocConnectionString);
    reportClientDoc.open(reportPath, OpenReportOptions._openAsReadOnly);

    ITable table = reportClientDoc.getDatabaseController().getDatabase().getTables().getTable(0);

    IConnectionInfo oldConnectionInfo = new ConnectionInfo();
    IConnectionInfo newConnectionInfo = new ConnectionInfo();

    // Assign the old Connection info to the reports current info
    DatabaseController dbController = reportClientDoc.getDatabaseController();
    oldConnectionInfo = dbController.getConnectionInfos(null).getConnectionInfo(0);

// Create a new propertybag for the new location
PropertyBag propertyBag = oldConnectionInfo.getAttributes();
propertyBag.put("Use JDBC", true);
propertyBag.put("Use JNDI", true);
propertyBag.put("JNDI Datasource Name", jndiName);
newConnectionInfo.setAttributes(propertyBag);
newConnectionInfo.setKind(ConnectionInfoKind.SQL);

    Fields pFields = null;
    if (table instanceof CommandTable) {

// ((CommandTable) table).setCommandText(sql);
}

    int replaceParams = DBOptions._ignoreCurrentTableQualifiers + DBOptions._doNotVerifyDB;
    reportClientDoc.getDatabaseController().replaceConnection(oldConnectionInfo, newConnectionInfo, pFields,
            replaceParams);

    try{
         String result="C:/MyDevelopTools/ReportResult.pdf";
            Fields fields = reportClientDoc.getDataDefController().getDataDefinition().getParameterFields();
            for (int i = 0; i < fields.size(); i++) {
               IParameterField paramField = (IParameterField)fields.getField(i);
               String name = paramField.getName();
                          reportClientDoc.getDataDefController().getParameterFieldController().setCurrentValue("", name , new String("guojun"));
            }

     ByteArrayInputStream byteInput = (ByteArrayInputStream) reportClientDoc
             .getPrintOutputController().export(ReportExportFormat.PDF);
     byte byteArray[] = new byte[byteInput.available()];
     File file = new File(result);
     FileOutputStream fileOut = new FileOutputStream(file);
     ByteArrayOutputStream byteOut = new ByteArrayOutputStream(byteInput
             .available());
     int x = byteInput.read(byteArray, 0, byteInput.available());
     byteOut.write(byteArray, 0, x);
     byteOut.writeTo(fileOut);
     byteOut.close();
     fileOut.close();

// reportClientDoc.close();
}
catch (Exception e) {
throw e;
}
}

时间: 2025-01-25 09:07:44

crystal report 水晶报表 可以直接在Java application的相关文章

c#中使用 crystal reports (水晶报表)的打包和部署问题

打包|水晶报表|问题 今天去给客户演示一个管理系统,一大早就老远跑过去了,没想到水晶报表不能用,提示keycodev2.dll或者无效密码,公司老总也大老远过去的,白浪费了一上午.真郁闷下午搜了一下帖子,终于搞定了1)新建"安装和部署项目"-->"安装向导"(2)选择项目类型(这里选"创建用于windows应用程序的安装程序")-->下一步(3)选择要包含的文件:要部署使用 Crystal Reports for Visual Stu

c#中使用 crystal reports (水晶报表)的打包和部署问题-报表/图形/Office-

今天去给客户演示一个管理系统,一大早就老远跑过去了,没想到水晶报表不能用,提示keycodev2.dll或者无效密码,公司老总也大老远过去的,白浪费了一上午.真郁闷下午搜了一下帖子,终于搞定了1)新建"安装和部署项目"-->"安装向导"(2)选择项目类型(这里选"创建用于windows应用程序的安装程序")-->下一步(3)选择要包含的文件:要部署使用 Crystal Reports for Visual Studio .NET 20

在 Visual Studio .NET中使用Crystal Report(中)-报表/图形/Off

在 Visual Studio .NET中使用Crystal Report(中) from www.aspfree.comtranslated by cash(天下第七)cashcao@msn.com(cashcao@msn.com) Crystal Report演示-使用Pull Model 我们可以用以下步骤来实现Crystal Reports的Pull Model的使用: (1) 创建一个.rpt文件,设定必要的数据库联接.(2)将CrystalReportViewer control放到

急需!!Crystal Reports水晶报表中的一个jar包!!!

问题描述 需要jar包:webreporting.jarjar包中必须含JPEReportSourceFactory这个文件,路径:(com.crystaldecisions.reports.reportengineinterface.JPEReportSourceFactory;).jar包路径:X:ProgramFilesBusinessObjectsCommon4.0(2.5)javalib哪位好心人有就发我邮箱zhangxs1987@126.com,小弟在这谢谢大家了! 解决方案 解决方

Crystal report开发报表时,当有多页时提示错误: the page size was not large enough to format the contents of an object in the report

问题描述 这个问题怎么解决? 解决方案 解决方案二:参考:http://www.prologcentral.com/forums/showthread.php?t=51

Visual Studio 2012使用水晶报表Crystal Report

原文:Visual Studio 2012使用水晶报表Crystal Report SAP在 2013年1月14日 released SAP Crystal Reports,developer version for Microsoft Visual Studio - 2012 .你可以从下面链接下载:http://downloads.businessobjects.com/akdlm/cr4vs2010/CRforVS_13_0_5.exe 下载并安装入你的电脑.安装 完毕,可以看到那些曾经熟

Crystal Report.net Web报表开发日记(二)

web 使用Crystal Report.net进行开发的一些预备知识: 执行模式 水晶报表取数据可以使用下面的方法实现: Pull 模式: 被请求时,水晶报表直接根据指定的驱动连接数据库然后组装这些数据. Push 模式 : 此时开发表不得不自己编写代码连接数据并组装DataSet,同时将它传送至报表.在些这种情况下,通过使用连接共享以及限制记录集合的大小,可以使用报表性能最大化. 报表类型: 水晶报表设计器能够直接包含报表至工程也能够使用独立的报表对象. Strongly-typed 报表

crystalreports-Crystal Reports水晶报表中图的图例如何修改啊?

问题描述 Crystal Reports水晶报表中图的图例如何修改啊? 在Crystal Reports水晶报表中,比如条形图中会有图例显示,但是图例中的文字都是你查询表格名.字段名+'和',如何把它修改成自己想要的内容呢?求好心人并且懂的人告知下,谢谢! 解决方案 crystal应该和Jasper一样的把,像我之前在做的报表项目,是从crystal转到Jasper的,但也需要修改图表的图例,我是通过加自定义类去实现的,用java代码实现自己想要添加的图例,最后打成jar包,加入到模板对应的图表

水晶报表调用oracle存储过程

水晶报表版本是8.5 存储过程是: create or replace package pkg_test4astype v_cursor is ref cursor;end pkg_test4;/create or replace procedure pro_test4(P_CURSOR in out pkg_test4.v_cursor)assqlstr varchar2(3000);beginsqlstr :='select table_name from user_tables';open