<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-0  評(píng)論-3  文章-28  trackbacks-0

    在.net中,你可以很容易的用sql語句過濾報(bào)表數(shù)據(jù),但在CR4E中沒這樣的功能設(shè)定,但可以通過編寫代碼完成。

    這里是我做的簡單用sql語句過濾數(shù)據(jù)的例子。

    項(xiàng)目還是用ǘ ├錈嫻膖omcat項(xiàng)目。

    建一個(gè)實(shí)現(xiàn)這個(gè)功能的類

    JRC_ResultSet_DataSource.java

    package com.JRC.util;
    import java.sql.*;
    import javax.servlet.http.*;

    import com.crystaldecisions.reports.sdk.*;
    import com.crystaldecisions.sdk.occa.report.lib.*;

    public class JRC_ResultSet_DataSource ...{
        
    private String      REPORT_NAME="";
        
    public JRC_ResultSet_DataSource(String report_name)...{
            
    this.REPORT_NAME=report_name;
         }

        
        
    /** *//**
          *
    @return rEPORT_NAME
         
    */

        
    public String getREPORT_NAME() ...{
            
    return REPORT_NAME;
         }


        
    /** *//**
          *
    @param report_name 要設(shè)置的 rEPORT_NAME
         
    */

        
    public void setREPORT_NAME(String report_name) ...{
             REPORT_NAME
    = report_name;
         }

        

        
    /** *//**
          *    連接數(shù)據(jù)庫,通過sql查詢語句進(jìn)行查詢,返回結(jié)果集
         
    */

        
    private static ResultSet getResultSetFromQuery(String query, int scrollType)
            
    throws SQLException, ClassNotFoundException ...{
             Class.forName(
    "com.microsoft.jdbc.sqlserver.SQLServerDriver");
            
    final String DBUSERNAME = "username";
            
    final String DBPASSWORD = "password";
            
    final String CONNECTION_URL = "jdbc:microsoft:sqlserver://localhost:1433;database=dname";
            
             java.sql.Connection connection
    = DriverManager.getConnection(CONNECTION_URL, DBUSERNAME, DBPASSWORD);
             Statement statement
    = connection.createStatement(scrollType, ResultSet.CONCUR_READ_ONLY);
            
            
    return statement.executeQuery(query);

         }

        
    /** *//**
          * 通過sql語句過濾報(bào)表數(shù)據(jù),在.net就不用怎么慘了
         
    */

        
    public boolean isReportSourceInSession(String session_name,HttpSession session) throws ReportSDKException, SQLException, ClassNotFoundException...{
            
    boolean flag=false;
            
    try ...{
                
    //打開水晶報(bào)表
                 ReportClientDocument reportClientDoc = new ReportClientDocument();
                 reportClientDoc.open(REPORT_NAME,
    0);
                
    //sql查詢語句,返回的字段數(shù)必須跟報(bào)表里面的一樣,不能多也不能少,并且字段的類型要跟報(bào)表的一樣,其他不管是什么數(shù)據(jù)都可以  
                
    //from 表這里要填完整,如數(shù)據(jù)庫名.dbo.數(shù)據(jù)庫表,最好做個(gè)別名
                 String query = "select tt.test_1,tt.test_2,tt.test_3,tt.test_4 from dname.dbo.test tt";
                
                 ResultSet resultSet
    = this.getResultSetFromQuery(query,ResultSet.TYPE_SCROLL_INSENSITIVE);
        
                 String tableAlias
    = reportClientDoc.getDatabaseController().getDatabase().getTables().getTable(0).getAlias();
                
    //把結(jié)果集放進(jìn)報(bào)表里,將會(huì)自動(dòng)產(chǎn)生一個(gè)datasource
                 reportClientDoc.getDatabaseController().setDataSource(resultSet,tableAlias, "resultsetTable");
                 session.setAttribute(session_name, reportClientDoc.getReportSource());
                 flag
    =true;
                
    return flag;
             }
    catch (Exception e) ...{
                
    // TODO: handle exception
                 e.printStackTrace();
                
    return flag;
             }
            
            
         }

    }

    這里要注意數(shù)據(jù)庫查詢結(jié)果集的字段數(shù)目要跟報(bào)表里面的字段數(shù)目一樣,類型也要一樣,不然就會(huì)出錯(cuò)。

    sql語句中的表的名字要完整,如數(shù)據(jù)庫名.dbo.數(shù)據(jù)庫表,最好做個(gè)別名

    顯示頁面

    Result_viewer.jsp

     

    <%@page import="com.JRC.util.JRC_ResultSet_DataSource" %>
    <%--webreporting.jar  --%>
    <%@page import="com.crystaldecisions.report.web.viewer.*" %>
    <%--jrcerom.jar --%>
    <%@ page import="com.crystaldecisions.reports.sdk.*" %>
    <%    
         JRC_ResultSet_DataSource jrcd
    =new JRC_ResultSet_DataSource("resultSet.rpt");
        
    if(!jrcd.isReportSourceInSession("reportSource",session)
             response.sendRedirect(
    "error.html");
         CrystalReportViewer crViewer
    =new CrystalReportViewer();
         crViewer.setOwnPage(
    true);
         crViewer.setOwnForm(
    true);
         crViewer.setPrintMode(CrPrintMode.ACTIVEX);
        
         Object reportSource
    =session.getAttribute("reportSource");
         crViewer.setReportSource(reportSource);
        
         crViewer.processHttpRequest(request,response,
    this.getServletConfig().getServletContext(),null);
    %>

    注意上面幾點(diǎn)應(yīng)該就沒問題了

    PS:Snippets視圖最下面有Crystal reports的一些實(shí)用代碼段

    CR查看器標(biāo)記、打開并查詢報(bào)表、打開報(bào)表、查看報(bào)表、查看報(bào)表并設(shè)置數(shù)據(jù)庫登錄、將報(bào)表導(dǎo)出為pdf、將報(bào)表導(dǎo)出為rtf 等的代碼段,簡單易用

    posted on 2008-03-28 16:48 閱讀(537) 評(píng)論(0)  編輯  收藏 所屬分類: java基礎(chǔ)
    主站蜘蛛池模板: 久久精品国产亚洲AV嫖农村妇女| 永久免费无码网站在线观看| 中文亚洲AV片不卡在线观看| 日韩精品免费一区二区三区| 亚洲毛片在线免费观看| 1000部无遮挡拍拍拍免费视频观看| 亚洲AV日韩精品久久久久久| 男女作爱在线播放免费网站| 亚洲成年人在线观看| 97在线视频免费| 亚洲国产日韩在线人成下载| 无码人妻一区二区三区免费手机| 亚洲午夜一区二区三区| 国产一级a毛一级a看免费视频| 亚洲中文字幕无码永久在线 | 久久亚洲国产最新网站| 国产美女在线精品免费观看| 亚洲色偷精品一区二区三区| 久热免费在线视频| 亚洲欧洲国产成人精品| 成全影视免费观看大全二| 色视频在线观看免费| 免费看大黄高清网站视频在线| 亚洲AV无码成人精品区日韩 | 你懂的网址免费国产| 亚洲av再在线观看| 一区免费在线观看| 久久久亚洲欧洲日产国码农村| 曰曰鲁夜夜免费播放视频| 亚洲国产精品久久久久网站 | 鲁大师在线影院免费观看| 91亚洲性爱在线视频| 国产在线观看www鲁啊鲁免费| WWW国产成人免费观看视频| 久久亚洲精品中文字幕| 韩国免费三片在线视频| 永久在线观看免费视频| 亚洲 欧洲 自拍 另类 校园| 亚洲精品第一国产综合境外资源 | 国产香蕉九九久久精品免费| 国产精品手机在线亚洲|