Jasper Report 問題

本帖最後由 luckiejacky 於 2013-10-11 19:19 編輯
  1. public class MonthlyMemberTotalSalesRpt extends AReport {

  2.     public MonthlyMemberTotalSalesRpt(Database _db) {
  3.         super(_db);
  4.     }

  5.     @Override
  6.     public void printReport(List data) {
  7.     {
  8.            

  9. String sql =  "select c.CustomerID AS '客戶ID',\n" +
  10.   "                 c.LastName AS '姓氏',\n" +
  11.   "                 c.FirstName AS '名字',\n" +
  12.   "                 p.PurchaseDateTime AS '购买日期时间',\n" +
  13.   "                 round(IFNULL(sum(IFNULL(p.GrossSales,0)),0),2) AS '销售总额',\n" +
  14.   "                round(IFNULL(sum(IFNULL(p.NetSales,0)),0),2) AS '净销售额'\n" +
  15.   "                from customer AS c LEFT JOIN\n" +
  16.   "   (select c.CustomerID, c.LastName, c.FirstName, o.PurchaseDateTime, od.GrossSales, od.NetSales \n" +
  17.   "                from customer c INNER JOIN\n" +
  18.   "             orders o ON (c.CustomerID = o.CustomerID)\n" +
  19.   "              INNER JOIN order_details  od ON (o.OrderID = od.OrderID)\n" +
  20.   "              where strftime('%m', o.PurchaseDateTime) = strftime('%m', 'now')\n" +
  21.   "                Group by c.CustomerID) p\n" +
  22.   "             ON p.CustomerID = c.CustomerID\n" +
  23.   "               group by c.CustomerID";

  24.         List<Sales> listOfSales = new ArrayList<>();

  25.         ResultSet rs = getDB().query(sql);
  26.         try {
  27.               while (rs.next())
  28.               {
  29.                    Sales s = new Sales();
  30.                    String CustID = rs.getString("客戶ID");
  31.                    int GS = rs.getInt("销售总额");
  32.                    int NS = rs.getInt("净销售额");
  33.                    s.setCustID(CustID);
  34.                    s.setGrossSales(GS);
  35.                    s.setNetSales(NS);
  36.                    listOfSales.add(s);
  37.               }
  38.         } catch (SQLException ex) {
  39.     Logger.getLogger
  40.           (MonthlyMemberTotalSalesRpt.class.getName())
  41.                  .log(Level.SEVERE, null, ex);
  42.     }
  43.    HashMap<String, Object> param = new HashMap<>();
  44.    URL logoStr = MonthlyMemberTotalSalesRpt.class.getResource("/resources/ICJB.png");

  45.    param.put("logo", logoStr);

  46.   param.put("ReportName", "Sales Report");


  47.                         
  48.   
  49.    JRBeanCollectionDataSource beanCollectionDataSource
  50.               = new JRBeanCollectionDataSource(listOfSales);
  51.    
  52.                              
  53.                              
  54.     JasperPrint    jp = null;
  55.     try {
  56.             jp = JasperFillManager.fillReport(
  57.                   getClass().getResourceAsStream(
  58.                        "/Reporting/MonthlyMemberTotalSales.jasper"),
  59.                                           param, beanCollectionDataSource);
  60.      } catch (JRException ex) {
  61.                    Logger.getLogger(
  62.                          MonthlyMemberTotalSalesRpt.class.getName())
  63.                                  .log(Level.SEVERE, null, ex);
  64.      }
  65.    JRViewer test = new JRViewer(jp);
  66.                         
  67.                  }
  68.                           
  69.    
  70.     }


  71. }
複製代碼
  1. Error
  2. net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : 客戶ID
  3.         at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDataSource.java:123)
複製代碼
Any help would be greatly appreciated!
THX

不如 你果D 中文(吾知係繁定簡)0既 variables
轉曬做英文先, 好似好D wor

我會 check 下
- Check下 iReport/Jrxml 個 field name 有無錯?
- 大小階 arm吾 arm?
- Sales 個 Object 有個 String variable 叫 "CustID" <== ?
- 你jrxml 個 mapping 叫 "CustID" 定 "客戶ID"呢


睇你D code,睇吾到有 問題
我估係D field name mapping 出錯了 :P

TOP

提示: 作者被禁止或刪除 內容自動屏蔽

TOP

可能我講得吾清楚

我只係建議樓主轉曬D variable 做英文 (個人 practice)
有D 簡字同繁字係D code到好估怪
我吾係話咁樣係錯的


我建議解決o既方法係
- Check下 Sales 個 Object 個 "CustID"
同Jrxml 到個 field ID 是否相同

我懷疑樓主個
係 Jrxml 個field ID 叫 "客戶ID"
而係 Sales 個 Object 個 variable 叫 "CustID"
姐係 Mapping 吾對
(我都係估下姐,希望幫到你)

TOP

Thanks ching, it's the chinese name problem,
I don't know why. Fixed now after changing back
to English.
Thanks

TOP