作者: luckiejacky 時間: 2013-10-11 18:55 標題: Jasper Report 問題
本帖最後由 luckiejacky 於 2013-10-11 19:19 編輯
- public class MonthlyMemberTotalSalesRpt extends AReport {
- public MonthlyMemberTotalSalesRpt(Database _db) {
- super(_db);
- }
- @Override
- public void printReport(List data) {
- {
-
- String sql = "select c.CustomerID AS '客戶ID',\n" +
- " c.LastName AS '姓氏',\n" +
- " c.FirstName AS '名字',\n" +
- " p.PurchaseDateTime AS '购买日期时间',\n" +
- " round(IFNULL(sum(IFNULL(p.GrossSales,0)),0),2) AS '销售总额',\n" +
- " round(IFNULL(sum(IFNULL(p.NetSales,0)),0),2) AS '净销售额'\n" +
- " from customer AS c LEFT JOIN\n" +
- " (select c.CustomerID, c.LastName, c.FirstName, o.PurchaseDateTime, od.GrossSales, od.NetSales \n" +
- " from customer c INNER JOIN\n" +
- " orders o ON (c.CustomerID = o.CustomerID)\n" +
- " INNER JOIN order_details od ON (o.OrderID = od.OrderID)\n" +
- " where strftime('%m', o.PurchaseDateTime) = strftime('%m', 'now')\n" +
- " Group by c.CustomerID) p\n" +
- " ON p.CustomerID = c.CustomerID\n" +
- " group by c.CustomerID";
- List<Sales> listOfSales = new ArrayList<>();
- ResultSet rs = getDB().query(sql);
- try {
- while (rs.next())
- {
- Sales s = new Sales();
- String CustID = rs.getString("客戶ID");
- int GS = rs.getInt("销售总额");
- int NS = rs.getInt("净销售额");
- s.setCustID(CustID);
- s.setGrossSales(GS);
- s.setNetSales(NS);
- listOfSales.add(s);
- }
- } catch (SQLException ex) {
- Logger.getLogger
- (MonthlyMemberTotalSalesRpt.class.getName())
- .log(Level.SEVERE, null, ex);
- }
- HashMap<String, Object> param = new HashMap<>();
- URL logoStr = MonthlyMemberTotalSalesRpt.class.getResource("/resources/ICJB.png");
- param.put("logo", logoStr);
- param.put("ReportName", "Sales Report");
-
-
- JRBeanCollectionDataSource beanCollectionDataSource
- = new JRBeanCollectionDataSource(listOfSales);
-
-
-
- JasperPrint jp = null;
- try {
- jp = JasperFillManager.fillReport(
- getClass().getResourceAsStream(
- "/Reporting/MonthlyMemberTotalSales.jasper"),
- param, beanCollectionDataSource);
- } catch (JRException ex) {
- Logger.getLogger(
- MonthlyMemberTotalSalesRpt.class.getName())
- .log(Level.SEVERE, null, ex);
- }
- JRViewer test = new JRViewer(jp);
-
- }
-
-
- }
- }
- Error
- net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : 客戶ID
- at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDataSource.java:123)
THX
作者: heiko 時間: 2013-10-12 12:16
不如 你果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
作者: Flower 時間: 2013-10-12 12:18
提示: 作者被禁止或刪除 內容自動屏蔽
作者: heiko 時間: 2013-10-12 12:40
可能我講得吾清楚
我只係建議樓主轉曬D variable 做英文 (個人 practice)
有D 簡字同繁字係D code到好估怪
我吾係話咁樣係錯的
我建議解決o既方法係
- Check下 Sales 個 Object 個 "CustID"
同Jrxml 到個 field ID 是否相同
我懷疑樓主個
係 Jrxml 個field ID 叫 "客戶ID"
而係 Sales 個 Object 個 variable 叫 "CustID"
姐係 Mapping 吾對
(我都係估下姐,希望幫到你)
作者: luckiejacky 時間: 2013-10-12 17:53
Thanks ching, it's the chinese name problem,
I don't know why. Fixed now after changing back
to English.
Thanks
