<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| 国产精品久久久久久亚洲影视| 国产精品亚洲专区无码不卡| 日韩精品极品视频在线观看免费| 亚洲色成人网一二三区| 日本免费网站在线观看| 精品一卡2卡三卡4卡免费视频| 亚洲综合无码一区二区痴汉| 亚洲深深色噜噜狠狠爱网站| 亚洲一级片免费看| 亚洲精品在线免费看| 久久久久久久99精品免费观看| 亚洲www在线观看| 亚洲AⅤ永久无码精品AA | 野花香高清视频在线观看免费 | 亚洲色欲久久久综合网| 在线观看日本免费a∨视频| 久久免费观看视频| 在线a亚洲v天堂网2019无码| 国产v精品成人免费视频400条| yy一级毛片免费视频| 狠狠色伊人亚洲综合网站色| 午夜无遮挡羞羞漫画免费| 亚洲人成电影网站色www| 亚洲国产精品福利片在线观看| 日本v片免费一区二区三区| 最近在线2018视频免费观看| 鲁啊鲁在线视频免费播放| 亚洲av成人一区二区三区| 国产av天堂亚洲国产av天堂| 免费看大黄高清网站视频在线| 久久亚洲精品无码网站| 337p欧洲亚洲大胆艺术| 国产AV无码专区亚洲AV毛网站| 亚洲高清偷拍一区二区三区| 免费a级毛片无码a∨免费软件| 亚洲日本视频在线观看| 手机在线免费视频| 亚洲国产免费综合| 免费播放国产性色生活片| 91精品国产亚洲爽啪在线影院|