我是个新手,ireport都是摸索这前进,现在的问题是这样的我用的ireport 3.6.0 的,eclipse开发
要做一个报表,往主表里传了一个List<TravelInsuredInfoDto>,been代码是这样import java.io.Serializable;
import java.util.List;public class TravelInsuredInfoDto implements Serializable{ /**
 * 
 */
private static final long serialVersionUID = -1795811991384315407L;

private String contractNo;                   //保险单号
private String applicationName;                //投保人姓名
private String validateDate;                //生效日
private String inValidateDate;                //失效日
private String area;                //旅游区域
private long insureCount;                //投保人数
private String grossPrem;                //总保费
private long period;                //保障期
private String travelLine;                //旅游线路
private List <TravelInsuranceDutyDto> travelInsuranceDutyDtoList;  //责任组信息
private List <InsurancePersonDto> insurancePersonDtoList;          //被保人信息


public String getContractNo() {
return contractNo;
}
public void setContractNo(String contractNo) {
this.contractNo = contractNo;
}
public String getApplicationName() {
return applicationName;
}
public void setApplicationName(String applicationName) {
this.applicationName = applicationName;
}
public String getValidateDate() {
return validateDate;
}
public void setValidateDate(String validateDate) {
this.validateDate = validateDate;
}
public String getInValidateDate() {
return inValidateDate;
}
public void setInValidateDate(String inValidateDate) {
this.inValidateDate = inValidateDate;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
public long getInsureCount() {
return insureCount;
}
public void setInsureCount(long insureCount) {
this.insureCount = insureCount;
}
public String getGrossPrem() {
return grossPrem;
}
public void setGrossPrem(String grossPrem) {
this.grossPrem = grossPrem;
}
public long getPeriod() {
return period;
}
public void setPeriod(long period) {
this.period = period;
}
public String getTravelLine() {
return travelLine;
}
public void setTravelLine(String travelLine) {
this.travelLine = travelLine;
}
public List<TravelInsuranceDutyDto> getTravelInsuranceDutyDtoList() {
return travelInsuranceDutyDtoList;
}
public void setTravelInsuranceDutyDtoList(
List<TravelInsuranceDutyDto> travelInsuranceDutyDtoList) {
this.travelInsuranceDutyDtoList = travelInsuranceDutyDtoList;
}
public List<InsurancePersonDto> getInsurancePersonDtoList() {
return insurancePersonDtoList;
}
public void setInsurancePersonDtoList(
List<InsurancePersonDto> insurancePersonDtoList) {
this.insurancePersonDtoList = insurancePersonDtoList;
}
}
public class InsurancePersonDto implements Serializable {
private String real_name;
private String certi_code;
private String fixed_tele; public String getReal_name() {
return real_name;
} public void setReal_name(String realName) {
real_name = realName;
} public String getCerti_code() {
return certi_code;
} public void setCerti_code(String certiCode) {
certi_code = certiCode;
} public String getFixed_tele() {
return fixed_tele;
} public void setFixed_tele(String fixedTele) {
fixed_tele = fixedTele;
}}public class TravelInsuranceDutyDto  implements Serializable{ private String risk_abbr;
private String duty_name;
private String amount;
private String DEDUCTIBLE_AMOUNT;
private String PAYMENT_RATIO;

public String getRisk_abbr() {
return risk_abbr;
}
public void setRisk_abbr(String riskAbbr) {
risk_abbr = riskAbbr;
}
public String getDuty_name() {
return duty_name;
}
public void setDuty_name(String dutyName) {
duty_name = dutyName;
}
public String getAmount() {
return amount;
}
public void setAmount(String amount) {
this.amount = amount;
}
public String getDEDUCTIBLE_AMOUNT() {
return DEDUCTIBLE_AMOUNT;
}
public void setDEDUCTIBLE_AMOUNT(String dEDUCTIBLEAMOUNT) {
DEDUCTIBLE_AMOUNT = dEDUCTIBLEAMOUNT;
}
public String getPAYMENT_RATIO() {
return PAYMENT_RATIO;
}
public void setPAYMENT_RATIO(String pAYMENTRATIO) {
PAYMENT_RATIO = pAYMENTRATIO;
}


}
然后往主表传个List<TravelInsuredInfoDto >,主表的上部显示其他属性,接着是以List <TravelInsuranceDutyDto>作为数据源的子表,然后是List <InsurancePersonDto>作为数据源的子表,子表两个List可以通过主表的contractNo属性得到,我现在的问题是
第一:不知道怎么用子表,也不会传值
第二:我想要是能往子表里传contractNo的话,在子表里直接SQL查询,可我在SQL语句里面用 $P{contractNo}表示传过来的值,没有成功,哪位老大给点指点,谢谢

解决方案 »

  1.   

    ireport你可以选数据源的,自己无需写java代码,
      

  2.   

    推荐jasperreport QQ群121174498  
    8错的群
      

  3.   

    你需要在主表中定义一个变量来存放子报表的数据,在主表中的子报表的数据源采用“使用数据源表达式”。例如:
    按照你定义的存放子报表的数据源的变量是STUDENTFAMLIYINFOLIST,那么在子报表中使用的数据源的形式为
    new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{STUDENTFAMLIYINFOLIST})