Tvorba sestav - DataReport

Tak, a nynφ je nejvyÜÜφ Φas si ukßzat, jak vytvß°et trochu nßroΦn∞jÜφ reporty pomocφ sekce Group Header a vno°en²ch RecordSet∙. Otev°ete si tedy DataEnvironment, zalo₧te nov² RecordSet a nastavte jej nßsledovn∞:

Nezapome≥te jako v₧dy nastavit sprßvn∞ LockType a CursorType. Tento RecordSet vybere jedineΦnΘ v²skyty telefonnφch p°edvoleb v tabulce PSC. Nynφ si p°ipravφme vno°en² RecordSet, kter² bude pomocφ telefonnφ p°edvolby svßzßn s nad°φzen²m RecordSetem). OznaΦte nßÜ nov∞ vytvo°en² RecordSet (sRep2) a pou₧ijte tlaΦφtko Add Child Command. Zalo₧φ se nov² RecordSet, ale ne ji₧ p°φmo pod spojenφ CNN, ale bude pod°φzen RecordSetu sRep2. Zßkladnφ vlastnosti nastavte nßsledovn∞:

Nynφ je nutnΘ nastavit jeÜt∞ relaci mezi vno°en²m a rodiΦovsk²m RecordSetem. P°epn∞te se na zßlo₧ku Relation a v definici relace zvolte jak Parent Fields tak Child Fields pole TELPRED. Pak klikn∞te na tlaΦφtko Add:

Takto by m∞l vypadat v²sledek.

A te∩ k reportu. Abychom si uÜet°ili prßci, tak nejprve nßÜ ji₧ hotov² report ulo₧φme pod jin²m jmΘnem a pak ho upravφme. Tak₧e klikn∞te v Project Exploreru prav²m tlaΦφtkem na rptRep1 a ulo₧te jej jako rptRep2. Nynφ jej otev°ete a p°ejmenujte na rptRep2. Do projektu p°idejte zp∞t rptRep1.

Nynφ si upravφme rptRep2. Klikn∞te do jeho tiskovΘ plochy prav²m tlaΦφtkem a pou₧ijte volbu Insert Group Header/Footer. Zalo₧φ se novß sekce. Nynφ klikn∞te na titulek celΘho reportu, aby se zobrazili vlastnosti celΘ sestavy. Jako DataMember nastavte sRep2. Do sekce Group Header p°idejte RptLabel s popiskem "Telefonnφ p°edvolba" a jeden RptTextBox, jeho₧ DataMember nastavte na sRep2 a DataField na TELPRED. Pod n∞j p°etßhn∞te prvky, kterΘ jsou dosud v sekci Page Header - popisky i Φßru:

Nesmφme zapomenout jeÜt∞ takΘ opravit prvky, kterΘ jsou v Sekci Detail. StaΦφ v₧dy jen vybrat prvek a zm∞nit mu DataMember na sRep2c - pozor, ne sRep2, ale na vno°en² RecordSet.

No a koneΦn∞ jeÜt∞ trochu upravφme ty poΦty zßznam∙ - vÜechny prvky, kterΘ mßte v sekci Report Footer p°esu≥te do sekce Group Footer a samoz°ejm∞ ₧e je t°eba zm∞nit DataMember u RptFunction na sRep2c.

Nynφ si na formulß° p°idejte dalÜφ tlaΦφtko a na jeho udßlost Click zapiÜte:

Private Sub Command2_Click()

   rptRep2.Show vbModal

End Sub


Nynφ pus¥te projekt, klikn∞te na nov∞ vytvo°enΘ tlaΦφtko a divte se. Pokud jste vÜe ud∞lali sprßvn∞, potom budou v₧dy pro jednotlivΘ telefonnφ p°edvolby vypsßny mφsta a na konci bude zobrazen poΦet zßznam∙ pro danou telefonnφ p°edvolbu.

Nemyslete si, ₧e u takto sestavenΘho reportu si nem∙₧eme hrßt se zdrojov²m RecordSetem. Pokud si nechßte vypsat Source pro sRep2 tak zjistφte, ₧e vypadß nßsledovn∞:

SHAPE {SELECT DISTINCT TELPRED FROM PSC ORDER BY TELPRED} AS sRep2 APPEND ({Select * From PSC Order by MISTO} AS sRep2c RELATE 'TELPRED' TO 'TELPRED') AS sRep2c


My si jej samoz°ejm∞ m∙₧eme upravit stejn∞, jako jsme to d∞lali v p°edchozφm p°φpad∞ - jen bude ten v²sledn² SQL p°φkaz maliΦkato komplikovan∞jÜφ. Otev°ete si formulß° a na tlaΦφtko, kter²m volßte nßÜ skupinov² report zapiÜte:

Private Sub Command2_Click()

   If DE.rssRep2.State = 1 Then
      DE.rssRep2.Close
   End If
   DE.rssRep2.Source = "SHAPE {SELECT DISTINCT TELPRED FROM PSC _
      Where TELPRED    LIKE '036%' ORDER BY TELPRED} AS sRep2 _
      APPEND ({Select * From PSC Order by    MISTO} AS sRep2c _
      RELATE 'TELPRED' TO 'TELPRED') AS sRep2c"
   DE.rssRep2.Open
   rptRep2.Show vbModal

End Sub

Nynφ projekt op∞t spus¥te a zkuste si vyvolat skupinov² report. V n∞m nynφ budou zobrazeny pouze ty skupiny mφst, jejich₧ telefonnφ p°edvolba zaΦφnß 036. Rßd bych Vßs v tomto okam₧iku upozornil na jednu v∞c - pokud mo₧no se vyhn∞te modifikovßnφ druhΘ Φßsti dotazu, kterß vytvß°φ vno°en² RecordSet. V∞tÜinou niΦeho nedosßhnete, jen budete vytoΦen², proto₧e se Vßm zaΦnou kupit chyby.

Zp∞t DalÜφ

Autor: The Bozena