nyomtatványok kezelése Java-ban

Jasper Report Dev

Jasper Report Dev

Lista a listában

tömbök kezelése a nyomtatványon

2016. június 16. - lacimol

Esetenként szükség lehet egy lista egy másik lista elemen belüli megjelenítésére. Ilyen például a szervizkönyvben a gépjármű listán belüli bejegyzés lista. Ez alapján egy autó adatai alatt láthatjuk a szerviz és vizsga dátumokat. A fenti feladat megoldható két lista elem egymásba ágyazásával. Ehhez bővítenünk kell a kezdeti adatforrást egy "vehicle" elemen belüli új tömbbel ("issues"), azaz a járművekhez csatoljuk a hozzájuk kapcsolódó bejegyzéseket.

{
  "personal": {
    "name": "Molnár László",
    "birthPlace": "Baja",
    "birthDate": "1975-04-03"
  },
  "vehicles": [
    {
      "make": "Honda",
      "model": "Civic",
      "year": 1996,
      "issues": [{
        "date": "1996-01-01",
        "km": 0,
        "description": "Vétel"
      }, {
        "date": "1997-02-03",
        "km": 15677,
        "description": "Szerviz"
      }, {
        "date": "1998-03-04",
        "km": 25400,
        "description": "Vizsga"
      }]
    },{
      "make": "Ford",
      "model": "S-Max",
      "year": 2006,
      "issues": [{
        "date": "2006-06-01",
        "km": 0,
        "description": "Vétel"
      }, {
        "date": "2007-02-03",
        "km": 25111,
        "description": "Szerviz"
      }, {
        "date": "2008-03-04",
        "km": 45500,
        "description": "Vizsga"
      }]
    },{
      "make": "Škoda",
      "model": "Ŕoomster",
      "year": 2016
    },{
      "make": "Лада",
      "model": "Нива",
      "year": 1986
    }
  ]
}

A tömbök kezelése

A fenti adatforrás 4 elemet tartalmaz a vehicles tömbben és - 2 elemen belül -  további 3-3 elemet az issues-ban. Például a Ford S-Max első vizsgájának időpontjára (2008-03-04) így hivatkozhatunk: "vehicles[1].issues[2].date", ha egy külön adatmezőbe   kiemelnénk csak ennek az egy elemnek a dátum mezőjét ($F{vehiclesIssueDate}).

A tömbök számozása 0-tól kezdődik, így a vehicles[1] a második járműre mutat (Ford). Sajnos a Dataset editor nem ad támogatást a sorszámok megadásához, mert bármelyik elemet adnánk a field-ekhez, mindig a sorszám nélküli elérési utat menti el (a módosításokat a "Data preview" fülön próbálgathatjuk). Ha nem adjuk meg a tömbök adott elemének számát (vehicles.issues.date), akkor az ezen az elérési úton lévő összes elemet  (2*3) visszakapjuk egy tömbben (["1996-01-01","1997-02-03",...]). Így a "vehicles[1].issues[2].date" és a "vehicles.issues.date[5]" ugyanazt az elemet adja vissza.

arrayspath.png

Lista a listában

Az újabb lista behúzásához a "MainReport" fülről át kell lépnünk a már létező List elemre (dupla kattintás). A Properties fülön érdemes rögtön elnevezni az eddigi List néven futó listánkat (mondjuk VehicleList-nek). Így a Design részen már ez fog megjelenni és könnyebben meg tudjuk majd különböztetni a behúzandó allistától. A behúzáshoz növeljük meg a VehicleList elemet vertikálisan, majd a Palette-ről húzzunk be egy új List elemet. Adjuk meg adatforrásnak az "issues" blokkot(*) és adjuk hozzá a szükséges mezőket (date, km, description), majd ezt az listát is nevezzük el (IssueList). A VehicleList-en lévő 3 mezőt vonjuk egybe és emeljük ki vastagon (bold). Az IssueList-en a km mezőt bővítsük a " km" mértékegységgel a szövegmezőben.

(*) A belső lista adatforrásánál (DataSet) nem a fő adatforrásból kiindulva kell megadnunk az expression mezőben a kifejezést (...subDataSource("vehicles.issues")), hanem a korábbi külső lista "vehicles" adatforrásából indulunk (...subDataSource("issues")).

arraysinarray.png

A módosítások eredménye az előnézeti képen (preview):

carslistinlist.png

A forrásfájlok letölthetők innen, a videó pedig elérhető itt. A következő posztban a listák sorrendjével és szűrésével foglalkozom majd.

A bejegyzés trackback címe:

https://jasperreport.blog.hu/api/trackback/id/tr778776712

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása