Kada dodate polje u tabelu, redovi podnožja za grupe u tabeli koriste podrazumevanu agregatnu funkciju, Sum, za to polje kako bi se odredila ukupna vrednost redova za svaku grupu. Ista funkcija se koristi za računanje sveukupnog zbira za tabelu u podnožju tabele. U telu izveštaja, agregatna funkcija operiše nad setom redova definisanih u izrazu, kao što je polje i vraća polje, kao što je ukupna vrednost. Obično, agregatna funkcija operiše nad numeričkim vrednostima, ali pojedine agregatne funkcije rade sa stringovima. U zaglavlju i podnožju strane, neke agregatne funkcije mogu raditi samo na izrazima stavki izveštaja.

Pošto se izrazi računaju u telu izveštaja kada se izveštaj procesira, agregatna funkcija u telu izveštaja ima pristup dataset-u i tako može koristiti izraz polja kao argument. Međutim, izrazi u zaglavlju i podnožju strane se računaju nakon što se procesira telo izveštaja, a pre renderovanja. Ako pokušate da koristite izraz =Sum(Fields!SalesAmount.Value) u podnožju strane, izveštaj se neće kompajlirati. Ovde je izraz stavke izveštaja spas, zato što može prisupiti informacijama procesirane strane i vratiti vrednost koja će se prikazati na renderovanoj strani. Tako, možete koristiti =Sum(ReportItems!SalesAmount.Value) za ukupnu vrednost svih textbox-ova označenih kao SalesAmount na strani.

Reporting Services podržava 14 standardnih agregatnih funkcija, prikazanih u tabeli:




Ove funkcije se tipično koriste u podnožjima redova tabele ili matrice, ali se mogu takođe koristiti u zasebnim textbox-ovima. Preostale tri funkcije se mogu koristiti u redovima detalja za prikaz vrednosti prethodnog reda, trenutnog broja reda ili akumulirane vrednosti. Ove funkcije su prikazane u sledećoj tabeli:



Iako je Report Designer dodao agregatnu funkcija Sum kada ste prevukli polje u zaglavlje ili podnožje tabele, Vi možete takođe uneti agregatnu funkciju direktno u tabelu – na primer, kada je potrebno prikazati kumulativne vrednosti u redovima detalja ili srednju vrednost u  redu podnožja. Agregati se mogu koristiti i van regiona podataka u zasebnim textbox-ovima, u telu izveštaja, u zaglavlju ili podnožju tabele. Na primer, možda ćete želeti da prikažete sveukupni zbir na prvoj strani izveštaja ili da prikažete zbir za stranu u podnožju svake strane. U slučaju nenumeričkih podataka, kao što je spisak zaposlenih, možda ćete želeti da prikažete ime prvog i poslednjeg zaposlenog u podnožju strane.



Korišćenje agregatnih funkcija u tabeli

Kada koristite agregatne funkcije u regionu podataka, kao što je tabela, potrebno je da razmislite o opsegu funkcije. Opseg u kontekstu regiona podataka određuje koji su redovi  uključeni kada se računa agregatna vrednost. Opseg se može odnositi ne samo na grupisanje u regionu podataka, već i na čitav region podataka ili čak na tekući dataset.

Mnoge agregatne funkcije koriste sintaksu Function(Expression,Scope), ali RunningValue funkcija se konstruiše korišćenjem sledeće sintakse:
RunningValue(Expression,Function,Scope)
U ovoj funkciji, Expression ne može u sebi da sadrži agregatnu funkciju; Function je agregatna funkcija koja će se primeniti (koja ne može da bude RunningValue ili RowNumber) i Scope je ime regiona podataka ili grupisanja u regionu podataka i sadržana je unutar znaka navoda.

Sada ćete koristiti RunningValue funkciju za računanje kumulativa po podkategorijama proizvoda.

  1.  Kliknite na Layout tab, desni klik na Sales Amount marker kolone, a zatim kliknite na Insert Column To The Right.
  2. Unesite Cumulative u novu ćeliju u zaglavlju grupe Category (drugi red tabele).
  3. Kliknite na Align Right dugme u Report Formatting toolbar-u.
  4. Dodajte sledeći izraz u Cumulative ćeliju u redu detalja:

    =RunningValue(Fields!SalesAmount.Value,Sum,"table1_SubCategory")

    Ovaj izraz računa tekući zbir SalesAmount koji se poništava svaki put kada se Scope promeni. (U ovom slučaju Scope je naziv grupe baziran na SubCategory vrednosti.)

  5. Snimite solution i onda kliknite na Preview tab da biste proverili da li gornji levi deo Vašeg izveštaja izgleda kao na slici.

 


Zapazite da se Cumulative vrednost povećava sa svakim redom detalja u svakoj podkategoriji. Cumulative vrednost za poslednji red detalja je jednak međuzbiru za podkategoriju. Zatim se Cumulative vrednost postavlja na nulu i povećava se za svaki red detalja u sledećoj grupi. Zato što je Cumulative vrednost vezana za Sales Amount kolonu možete natpis postaviti iznad kolone što bi bolje objašnjavalo vrednost u Cumulative koloni.

Sada ćete spojiti ćelije u zaglavlju tabele i centrirati Sales Amount naziv iznad kolona u kojima se prikazuje stvarna i kumulativna vrednost.
  1. Kliknite na Layout tab, kliknite na Sales Amount zaglavlje tabele (prvi red), pritisnite Ctrl, i dok držite Ctrl taster kliknite na ćeliju sa desne strane, desnim klikom kliknite na bilo koju od selektovanih ćelija i zatim kliknite na Merge Cells. Spajanje ćelija je korisno za centriranje naziva preko više kolona u regionu podataka, kao što je tabela ili matrica.
  2. Kliknite na Center dugme u Report Formatting toolbar-u da biste centrirali tekst preko dve ćelije. Prve tri kolone tabele u dizajneru izgledaju kao na slici:

 


Korišćenje agregatnih funkcija u Textbox-u

Ponekad ćete želeti da prikažete rezultat agregatne funkcije nezavisno od regiona podataka koji sadrži podatke koji se koriste u agregatnoj funkciji. Možete postaviti agregatnu funkciju u zaseban textbox koji će se nalaziti bilo gde u izveštaju. Ako želite da uradite to, uključite i odgovarajući naziv koji možete smestiti u zaseban textbox ili kao deo izraza u istom textbox-u, kako biste naznačili šta prikazana vrednost u izveštaju znači. Kada koristite izraz za nadovezivanje stringova sa numeričkom vrednošću, kao što je agregacija, potrebno je da koristite Format funkciju u kojoj će se nalaziti agregatna funkcija, čija će vrednost biti konvertovana u string uz odgovarajuće formatiranje. Sintaksa Format funkcije glasi Format(Expression, FormatString), gde je FormatString string koji ćete koristiti u Format svojstvu.

Kao što ste videli ranije, izraz korišćen u agregatnoj funkciji zavisi od njegove lokacije u izveštaju. Kada koristite agregatnu funkciju u telu izveštaja, morate koristiti izraz polja. U telu funkcije, opseg agregatne funkcije je uvek dataset, koji mora biti specificiran samo kada postoji više od jednog dataset-a u izveštaju. Zbog toga što se može desiti da kasnije dodate još neki dataset, bilo bi dobro da Vam uđe u naviku da uključite dataset u Scope argument i na taj način izbegnete kasnije izmene. Agregatna funkcija u zaglavlju ili podnožju strane mora koristiti izraz za stavku izveštaja. Scope se nikada ne koristi u tom kontekstu, zato što tada dataset više nije dostupan.

Sada ćete koristiti Sum funkciju da biste prikazali ukupnu prodaju proizvoda za sve kategorije u telu izveštaja umesto u tabeli.
  1. Klinite na Layout tab, kliknite na textbox u Toolbox prozoru, zatim u dizajneru, kliknite na mesto pored desnog gornjeg ugla slike.
  2. Koristeći marker za textbox podesite širinu na 2.5 inča i visinu na 0.25 inča kao što je na slici:



  3. Dodajte sledeći izraz u novi textbox:
    =Sum(Fields!SalesAmount.Value,"DataDetail")

    Pošto u izveštaju postoji samo jedan dataset Scope argument nije obavezan u izrazu. Mogli ste da napišete =Sum(Fields!SalesAmount.Value), međutim ako kasnije dodate još jedan dataset, moraćete da izmenite izraz kako bi se odnosio na odgovarajući dataset u Scope aergumentu.

  4. Kliknite na Preview tab i odskrolujte do desne strane izveštaja ako je neophodno. Možete videti da bi trebalo postaviti format i natpis koji bi govorio šta prikazana vrednost pretstavlja. Dok god je opseg agregatne funkcije u telu izveštaja dataset, suma predstavlja ukupnu prodaju svih proizvoda u izveštaju.
  5. Kliknite na Layout tab i izmenite izraz u textbox-u tako da dobijete izraz:
    ="Total Product Sales: "+Format(Sum(Fields!SalesAmount.Value, "DataDetail"), "c0")

    Ovaj izraz pretstavlja primer kako se vrši nadovezivanje (konkatenacija) agregatne funkcije i teksta.

  6. Na Report Formatting toolbar-u kliknite na Italic dugme.
  7. Snimite solution i pregledajte izveštaj tako da vrh izveštaja izgleda kao na slici.


 

Sada imate sveukupni zbir svih proizvoda u dataset-u.

Sada ćete koristiti First and Last funkciju da biste prikazali ukupnu prodaju proizvoda za sve kategorije u telu izveštaja.

  1. Klinite na Layout tab, kliknite na textbox u Toolbox prozoru, kliknite na podnožje strane desno od postojećeg textbox-a, a zatim postavite širinu textbox-a na 2 inča i visinu 0.25 inča i pozicionirajte ga tako da mu leva strana bude poravnata sa oznakom 2 inča na horizontalnom lenjiru (U Properties prozoru textbox-a možete podesiti za Location vrednost Left na 2).
  2. Kliknite na prvu ćeliju reda detalja i proverite da li je Name svojstvo textbox-a u Properties prozoru Product. Ime textbox-a se dodeljuje automatski kada se prevuče Product polje u ćeliju. Ukoliko iz nekog razloga ime nije dobro, izmenite ga.
  3. Kliknite na textbox koji ste dodali u podnožje strane i unesite sledeći izraz:

    =First(ReportItems!Product.Value)

    Ovaj izraz će pronaći naziv proizvoda u prvom redu detalja na strani i rezultat će prikazati u podnožju strane.

  4. Kliknite na textbox sa First agregatnom funkcijom, a onda kliknite na Align Right dugme na Report Formatting toolbar-u.
  5. Kliknite na isti textbox, i dok držite pritisnut Ctrl taster, prevucite ga na desnu stranu i na taj način ćete napraviti kopiju textbox-a čija će se leva ivica poravnati sa desnom ivicom originalnog textbox-a i sa oznakom 4 na horizontalnom lenjiru.
  6. Izmenite sadržaj drugog textbox-a tako da dobijete izraz:

    =" – " +Last(ReportItems!Product.Value)

    Izraz sadrži crticu kao vizuelni separator između prve i poslednjeg vrednosti prikazane u podnožju strane. Reporting Services ne dozvoljava da se koriste dva izraza stavke izveštaja  u istom textbox-u, ali možete postaviti dva textbox-a jedan pored drugog kako biste postigli isti efekat.

  7. Kliknite na textbox sa Last agregatnom funkcijom, a onda kliknite na Align Left dugme na Report Formatting toolbar-u.
  8. Snimite solution i pregledajte izveštaj, odskrolujte do dna strane. Dno strane treba da izgleda kao na slici.

 



Dodaj komentar Sviđa mi se - (0) Ne sviđa mi se - (0)    

  • Korišćenje agregatnih funkcija 1
  • Korišćenje agregatnih funkcija 2