簡體   English   中英

如何使用JasperReports查看表中的一條記錄?

[英]How to view only one record from a table using JasperReports?

我現在正在開展一個診所項目,我需要打印項目的特殊報告,例如特定患者的私人信息。

所以我為我的項目工作了數據庫,並在數據庫和JDeveloper之間建立了連接。 我設計的報告由JasperReport 5程序打印,我在Jasperreport 5和JDeveloper程序之間建立了連接。 現在我想通過Patient_Id為特定患者打印報告。 最后,我需要從我的數據庫中的表中的一條記錄打印報告,而不是數據庫中表中的所有記錄。

這是連接JasperReport和JDeveloper的代碼:

Connection con;

InputStream input=null;

Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
con = DriverManager.getConnection(url, "hr", "hr");
input=new FileInputStream(new File("report.jrxml")); 

JasperDesign jasperDesign;
jasperDesign=JRXmlLoader.load(input);

JasperReport jasperReport;
jasperReport=JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint;
jasperPrint=JasperFillManager.fillReport(jasperReport,null,con);
JRViewer v=new JRViewer(jasperPrint);
v.setVisible(true);
JFrame fr2=new JFrame();
fr2.setSize(200, 200);
fr2.add(v);
fr2.setVisible(true);

input.close();
con.close();

從提供的代碼外觀中,您嵌入了查詢以在報告中獲取患者信息。 哪個好。 現在,您需要微調該查詢以獲得單個結果。 因此,基本上您需要將一個參數傳遞給報告,以便為其提供患者ID,然后按此過濾結果。 由於您已經在使用sql,因此直接在sql中進行過濾(這是數據庫擅長的,所以讓它這樣做)。

以下是您需要遵循的步驟:

  1. 在您的報告中,創建一個名為PATIENT_ID的新參數,其類型為Integer (或者可能更合適,具體取決於數據庫中患者ID的字段類型)。
  2. 編輯您的查詢以獲得WHERE子句(或使用和AND附加到現有WHERE子句)以下(假設患者ID位於名為Patient_id的列中):
    Patient_id = $P!{PATIENT_ID}
  3. 現在,您需要在java代碼中傳入患者ID。 所以創建一個Map並將其添加到它中,如下所示:

     Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("PATIENT_ID", <the patient id value here>); 

    然后你需要將它傳遞給你對fillReport方法的調用,所以把它改成看起來像:

     jasperPrint=JasperFillManager.fillReport(jasperReport,parameters,con); 

就打印而言, JRViewer已經內置了打印功能。 因此用戶只需單擊打印按鈕即可。

您應該在Map中指定您作為fillReport第二個參數傳遞的條件,例如:

Map<String, Serializable> conditions = new HashMap<String, Serializable>();
conditions.put("PATIENT_ID", 1);
JasperPrint jasperPrint = JasperfillManager.fillReport(jasperReport, conditions, con);

希望有所幫助,讓我知道你是如何得到的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM