PANTHEON™ manual

 Categories
 PANTHEON Ajutor - Bun venit
[Collapse]PANTHEON
 [Collapse]Ghiduri pentru PANTHEON
  [Collapse]Ghid pentru PANTHEON
   [Collapse]Setări
    [Expand]Subiecte
    [Expand]Articole
    [Expand]POS
    [Expand]Fabricare
    [Expand]Personal
     Calendar
    [Expand]Financiare
    [Expand]Vamă
    [Collapse]Program
     [Expand]Tipuri de Documente
     [Collapse]Rapoarte în PANTHEON
       Setări în Panoul de Administrare
      [Expand]Registrul Raporturilor
       Previzualizare imprimare
      [Expand]Designer de rapoarte
      [Expand]Crearea Raportelor
      [Collapse]Grupuri și Agregate
        Raport cu Grupuri
        Funcții de grup
        Numerotarea liniilor
        Funcții Agregate
        Pagina și totalurile raportului
        Folosind obiectul "SysText"
        Grupare pe mai multe niveluri
      [Expand]Formatare și Evidențiere
       Rapoarte Încapsulate (Subrapoarte)
      [Expand]Specificațiilor printurilor în PANTHEON
      [Expand]Script
       Considerații privind designul raportului
      Texte Document
      Metode de livrare
     [Expand]Cărți de fidelitate
     [Expand]Panoul de Administrare
     [Expand]Componente Dashboard
      Rapoarte de tabloul de bord
      Analiză ad-hoc
     [Expand]ARES
      SQL editor
    [Expand]Documentație
    [Expand]Schimbă utilizatorul
   [Expand]Comenzi
   [Expand]Produse
   [Expand]Fabricare
   [Expand]POS
   [Expand]Serviciu
   [Expand]Financiare
   [Expand]Personal
   [Expand]Analitică
   [Expand]Desktop
   [Expand]Ajutor
   [Expand]Mesaje și Avertizări
   [Expand]Programe suplimentare
   [Expand]Produse vechi
  [Expand]Ghid pentru PANTHEON Retail
  [Expand]Ghid pentru PANTHEON Vet
  [Expand]Ghid pentru PANTHEON Fermă
 [Expand]Manuale de utilizare pentru PANTHEON
[Expand]PANTHEON Web
[Expand]PANTHEON Granule
[Expand]Site utilizator

Load Time: 953,1126 ms
print   |
Label

Raport cu Grupuri

Raport cu Grupuri

În exemplul anterior, am construit un raport pe două niveluri bazat pe datele din două tabele. Un alt raport care arată la fel poate fi construit în FastReport, de data aceasta bazat pe un set de date obținut dintr-o interogare combinată.

Pentru a face acest lucru, este necesară o interogare SQL care returnează date din ambele tabele și este sortată într-un mod particular .În exemplul nostru, tabelele vor fi unite pe câmpul "acSubject" din clienți și câmpul "acConsignee" din tabelul de comenzi. Interogarea ar putea fi:

select *
from tHE_SetSubj, tHE_Order 
where tHE_SetSubj.acSubject = tHE_Order.acConsignee
order by tHE_SetSubj.acSubject

Linia "order by" este necesară pentru a sorta înregistrările pe câmpul “acSubject” (client).

Cum poate fi proiectat un raport multi-nivel folosind aceste date? Există un band special, “Antet Grup”. O condiție (o valoare a câmpului din baza de date sau o expresie) este specificată pentru band; band-ul este generat de fiecare dată când valoarea condiției se schimbă. Exemplul următor ilustrează acest lucru.

Să creăm un nou proiect în Delphi și să plasăm componenta “TfrxDlDBQuery”. Setează proprietățile noii componente numite "DlDBQuery​1" așa cum este arătat aici:

SQL =

'select *
from tHE_SetSubj, tHE_Order       
where tHE_SetSubj.acSubject = tHE_Order.acConsignee
order by tHE_SetSubj.acSubject'

UserName = 'Group'

Adaugă un band “Antet grup” la raport. Setează o condiție (în acest caz câmpul de date “Group.acSubject”) în editorul band-ului “Antet grup”:

De asemenea, leagă band-ul de date la sursa de date “Group” și aranjează câteva obiecte așa cum este arătat (reține că antetul grupului trebuie plasat deasupra band-ului de date):

Band-ul “Antet grup” este generat doar atunci când câmpul la care este legat își schimbă valoarea. În caz contrar, band-ul de date conectat la setul de date “Group” este afișat. Dacă comparăm acest raport cu raportul master-detail construit anterior, este evident că numerele de ordine nu sunt deloc sortate. Acest lucru poate fi corectat cu ușurință prin schimbarea clauzei 'order by' a interogării SQL:

select *
from tHE_SetSubj, tHE_Order
where tHE_SetSubj.acSubject = tHE_Order.acConsignee
order by tHE_SetSubj.acSubject, tHE_Order.acKey

Rapoartele cu grupuri imbricate pot fi proiectate într-un mod similar. Adâncimea imbricării grupurilor este nelimitată. Rapoartele care folosesc grupuri au unele avantaje față de rapoartele de tip master-detail:

  • întregul raport necesită doar un singur set de date (interogare)
  • numărul nivelurilor de grupare a datelor este nelimitat
  • sortarea datelor devine posibilă
  • utilizarea mai optimă a resurselor bazei de date (interogarea returnează doar un singur set de date pentru ieșire, cu filtrarea efectuată de interogare).

Singura dezavantaj este necesitatea de a scrie interogări în limbajul SQL. Cu toate acestea, o cunoaștere de bază a SQL este practic obligatorie pentru orice programator care lucrează cu baze de date.

 



Rate this topic
Was this topic usefull?
Comments
Comment will also bo visible in forum!