JasperReports
'a yeni geliyorum. Alt raporun alt raporuna ArrayList
geçmek istiyorum.ArrayList JasperReports'a nasıl geçilir?
İçinde bir alt rapor içeren ana rapor var1 ve bu alt raporda1 bir
alt raporunda2 içerir.
Şimdi arrayList'i subreport2'ye nasıl geçireceksiniz?
Not
MasterReport -> SubReport -> SubReport
gibi: Benim DAO java sınıfından jasper DataList Jasper şablon oluşturmak için iReport
kullanarak ve geçirerek.
Aşağıda My DAO java sınıfı yukarıdaki DAO sınıf
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;
}
aşağıda listesi döndürür ve HashMap Param ile bu Arraylist
Jasper şablonu geçiyor
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..
benim Formu fasulye Sınıf olduğunu.
Aşağıda buradan i $p{list}
ArrayList
olduğunu
<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>
gibi alt rapor için ArrayList geçirerek, benim örnek Usta Jasper şablondur. ve ben aşağıdaki hatayı alıyorum, kod çalıştırırken
asusual subReport1 yazdırmak için bu listeyi kullanın:
Error retrieving field value from bean : tripID
Teşekkür Yardımlarınız için şimdiden.
btw, Java jenerikleri hakkında daha fazla bilgi edinmelisiniz - bunları düzgün kullanmıyorsunuz. – Bozho
bu sorun çözüldü mü? Ben benzer bir sorun yaşıyorum beri hayal kırıklığına uğradım. Başka bir dizi listesi nesnesine ve başka bir dizi listesi nesnesine sahip dizi listesi nesnesi. 3 seviyem var. –