Ich bin neu in JasperReports
. Ich möchte ArrayList
zum Unterbericht des Unterberichts übergeben.Wie übergeben Sie ArrayList an JasperReports?
Ich habe Master-Bericht, der eine subreport1 enthält und diese subreport1 ein
subreport2 innen kapseln.
Jetzt, wie ArrayList an Unterbericht2 übergeben?
Wie MasterReport -> SubReport -> SubReport
Hinweis: Ich bin mit iReport
Jaspis-Vorlage und vorbei Datenliste zu erstellen, die von meiner DAO Java-Klasse nach Jasper.
Unten ist mein Formular-Bean-Klasse
public class CollatReportData extends BaseItem {
private List<CusipData> listCusipData = null;
private String dealerID = null;
private String tripID = null;
private String loanNo = null;
private String dealerName = null;
private String tripDealerLoan = null;
public CollatReportData() {
super();
}
public List<CusipData> getListCusipData() {
return listCusipData;
}
public void setListCusipData(List<CusipData> listCusipData) {
this.listCusipData = listCusipData;
}
public String getDealerID() {
return dealerID;
}
public void setDealerID(String dealerID) {
this.dealerID = dealerID;
}
public String getTripID() {
return tripID;
}
public void setTripID(String tripID) {
this.tripID = tripID;
}
} // and so on for other variables..
Meine DAO Java-Klasse ist unter
public List<Object> getCollatData(String custName, String ctripid,
String dealerid, String userID) {
final Connection conn = super.getCurrentConnection();
String sqlQueryTrip = null;
ResultSet rsCollat = null;
String tripID = null;
String dealerID = null;
String cusSysID = null;
String loanNo = null;
String txnNo = null;
String cusipNo = null;
String cusipStatus = null;
String parVal = null;
String tripDealerLoan = null;
String OldtripDealerLoan = "";
String NewtripDealerLoan = "";
CollatReportData reportData = null;
CusipData cusipData = null;
List listCusip = new ArrayList<Object>();
List CollatList = new ArrayList<Object>();
try {
PreparedStatement pstmtTrip;
sqlQueryTrip = "SELECT iscl_sys_id, iscl_trip_id, iscl_trip_dealer_id, "
+ "iscl_cus_sys_id, iscl_bankref_cd, iscl_bdas_db_cd, "
+ "iscl_loan_no, iscl_txn_no, iscl_cusip_no, iscl_status_cd, "
+ "iscl_sec_de_tx, iscl_par_val_am, iscl_market_val_am, "
+ "scl_pri_source_cd, iscl_colla_mar_val_am, iscl_mature_dt, "
+ "iscl_sec_ty, iscl_sec_rt, iscl_sec_price_am, iscl_sec_factor, "
+ "iscl_sec_margin, iscl_sec_accrued_am "
+ "FROM BDS_DBA.INVCONF_SHELL_COLLAT "
+ "WHERE iscl_cus_sys_id='" + custName + "'";
pstmtTrip = conn.prepareStatement(sqlQueryTrip);
rsCollat = pstmtTrip.executeQuery();
if (rsCollat != null) {
while (rsCollat.next()) {
tripID = rsCollat.getString("iscl_trip_id");
dealerID = rsCollat.getString("iscl_trip_dealer_id");
loanNo = rsCollat.getString("iscl_loan_no");
tripDealerLoan = tripID + dealerID + loanNo;
cusipData = new CusipData();
cusipData.setTripID(tripID);
cusipData.setCusipNo(cusipNo);
cusipData.setTripDealerLoan(tripDealerLoan);
listCusip.add(cusipData);
} // end rsCollat
} // end if
CusipData cusipData1 = new CusipData();
List CusipList = new ArrayList<Object>();
for (int io = 0; io < listCusip.size(); io++) {
cusipData1 = (CusipData) listCusip.get(io);
NewtripDealerLoan = cusipData1.getTripDealerLoan();
tripID = cusipData1.getTripID();
dealerID = cusipData1.getDealerID();
loanNo = cusipData1.getLoanNo();
if (NewtripDealerLoan.equalsIgnoreCase(OldtripDealerLoan) || OldtripDealerLoan.equalsIgnoreCase("")) {
CusipList.add(cusipData1);
}
if (!NewtripDealerLoan.equalsIgnoreCase(OldtripDealerLoan)) {
reportData = new CollatReportData();
reportData.setTripID(tripID);
reportData.setTripDealerLoan(NewtripDealerLoan);
reportData.setListCusipData(CusipList);
//and so on
//........
CollatList.add(reportData);
CusipList = null;
}
OldtripDealerLoan = NewtripDealerLoan;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("Inside LoanDetailDAO:strTripQuery:Exception" + sqlQueryTrip + e);
}
return CollatList;
}
die oben DAO-Klasse gibt Liste und Weitergabe dieses Arraylist
zu Jasper Vorlage durch HashMap Param.
Unten ist mein Probe Meister Jaspis-Vorlage, von hier i Arraylist ist vorbei wie an subreport
<parameter name="list" isForPrompting="false" class="java.util.List"/>
<detail>
<band height="100" isSplitAllowed="true" >
<subreport isUsingCache="true">
<reportElement
x="30"
y="20"
width="170"
height="40"
key="subreport-1"/>
<dataSourceExpression><![CDATA[new JRBeanCollectionDataSource($P{list})]]></dataSourceExpression>
<subreportExpression class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "Collateral_SubReport1.jasper"]]></subreportExpression>
</subreport>
</band>
</detail>
wo $p{list}
ArrayList
ist. und anhand dieser Liste in subReport1 asusual
zu drucken, während der Code ausgeführt wird, erhalte ich die folgenden Fehler:
Error retrieving field value from bean : tripID
Vielen Dank für Ihre Hilfe im Voraus.
Übrigens sollten Sie wirklich mehr über Java Generics lesen - Sie verwenden sie nicht richtig. – Bozho
hat das Problem gelöst? Ich bin frustriert, da ich das ähnliche Problem habe. Das Array-Listenobjekt hat ein anderes Array-Listenobjekt und ein anderes Array-Listenobjekt. Ich habe 3 Ebenen. –