3

現在、クリニックプロジェクトに取り組んでおり、特定の患者の個人情報など、プロジェクトの特別なレポートを印刷する必要があります。

そのため、プロジェクトのデータベースを作成し、データベースとJDeveloperを接続しました。レポートをプログラムJasperReport5で印刷するように設計し、プログラムJasperreport5とJDeveloperを接続しました。次に、特定の患者のレポートを。で印刷しPatient_Idます。最後に、データベースのテーブルのすべてのレコードではなく、データベースのテーブルの1つのレコードのレポートを印刷する必要があります。

これは、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();
4

2 に答える 2

1

fillReportの 2 番目の引数として渡す Map で条件を指定する必要があります。

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

お役に立てば幸いです。

于 2012-12-12T22:00:05.623 に答える
1

提供されたコードを見ると、レポート自体に患者情報を取得するためのクエリが埋め込まれています。それは結構です。次に、そのクエリを微調整して、単一の結果を取得する必要があります。したがって、基本的には、パラメータをレポートに渡して患者 ID を指定し、それによって結果をフィルタリングする必要があります。すでにSQLを使用しているため、SQLで直接フィルタリングを行う必要があります(これはデータベースが得意とすることなので、やらせてください)。

従う必要がある手順は次のとおりです。

  1. PATIENT_IDレポートで、タイプの 名前の新しいパラメーターを作成しますInteger(または、データベース内の患者 ID のフィールド タイプに応じて、より適切なものになる可能性があります)。
  2. のクエリを編集して、次の句をWHERE追加します (または、 and を使用して既存のWHERE句に追加しますAND) (患者 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はすでに印刷機能が組み込まれています。したがって、ユーザーは印刷ボタンをクリックするだけです。

于 2012-12-12T21:58:13.533 に答える