Reportbuilder ohjeita

Asiantuntijat

Sisällysluettelo

Reportbuilder ohjeita

ReportBuilder on SKJ:n käyttämä raporttityökalu, jolla tulostetaan useat raportit ja tuotetulosteet.

http://www.digital-metaphors.com/download/learning_reportbuilder.html

Tuotekuvien lisääminen tulosteeseen

Tilausvahvistukseen, hinnastoon tms. määriteltävään lomakkeeseen pystyy lisäämään tuotteen kuvan seuraavasti:

  • Kuva pitää olla tietenkin tuotteen kuvataulussa.
  • Haluamalle rbuilderin bandillle (esim. detail) Image
  • Detail band:n beforeprint event laita laita koodia esim. seuraavasti. Tässä se on tehtynä myyntitilaukselle. Image1 on kuvakomponentin nimi

    procedure DetailBeforePrint;
    var
      FileName,kuvateksti: String;
    begin
      FileName :=GetTuoteKuva(Tilaukset['Tuote'],  1, kuvateksti);
      if FileExists(filename) then
      begin
        Image1.visible := true;
        Image1.Picture.loadFromFile(filename);
      end
      else
      begin
       image1.visible := false;
      end;
    
    end;
  • Tässä ohjelma hakee kuvan jonka järjestys on 1.
  • Kuvalle kannattaa laittaa strecth ja MaintainAspectRatio päälle.
  • Jos haluat, että kuvattomat rivit ovat matalampia, laita detail bandille DynamicHeight
  • Tietyt kuvaformaatit vaativat 'DirectDraw' -asetuksen päälle.

Tuotetekstin lisääminen tulosteeseen

Tilausvahvistukseen, hinnastoon tms. määriteltävään lomakkeeseen pystyy lisäämään tuotteen tekstin seuraavasti:
Lisätään haluttuun paikkaaa esim. Memo
ja memon OnPrint eventtiin koodi

procedure Memo1OnPrint;
begin
  memo1.lines.text := GetTuoteTxt( Tilaukset['Tuote'], 'KUVAUS');
end;
  • Tässä ohjelma hakee kuvaus otsikon alla olevan tekstin, esimerkki on tehty myyntitilausta varten . Tilaukset'tuote' korvataan tilanteeseen sopivalla viittauksella.

Myyjän ja asiakkaan kopion tulostaminen automaattisesti

Joskus halutaan esim. lähetteestä tai kassakuistista erilainen versio asiakkaalle ja myyjälle. Tälläinen esimerkkihän on oletuskuittipohjassa, jossa alhaalla lukee myyjän kappale ja asiakkaan kappale. Idea tässä on se, että laitetaan tulosteen kopiomääräksi haluttujen erilaisten versioden määrä ja ensimmäisellä kopiolla tulostetaan esim. asiakkaalle näkyvät ja toisella myyjälle näkyvät. Tässä esimerkissä lisätään joka tuoteriville viivakoodi, joka tulostuu vain myyjän kappaleeseen ja alas label, jossa lukee kumman kappale tämä on.
Tämä tehdään seuraavasti Rbuilderin lomakemäärittelyllä:
#Aseta raporttipohjan kopiot arvoon 2. File -> Page setup -> Copies 2

  1. Laita kaikki komponentit (jos ei ole jo) mihin muunnos vaikuttaa lomakepohjaan
    #Mene Calc välilehdelle
    ##vasemmasta yläkulmasta klikkaa hiiren oikealla ja valitse Module.
    ##Sitten valitse Global ja Declarations.
    ##Oikealta puolelta klikkaa Variables hiiren oikealla ja valitse New.
    1. Alapuolelle tulee Var ja sen alle kirjoita {{FCopy: Integer; }} FCopy on tässä nyt muuttuja, joka ilmaisee tulostettavavn kopion numeron
      #Calc välilehden vasemmasta ylänurkasta valitse hiiren oikealla Events.
  2. Valitse Vasemmasta yläkulmasta Report ja oikealta OnStartPage ja hiiren oikealla ota new. Kirjoita alastulleeseen tilaan koodi if (Report.SecondPass = True ) and (Report.AbsolutePageNo = 1) then
    FCopy := FCopy + 1;
  3. Vasemmalta hae Detail ja oikealta klikkaa BeforePrint hiiren oikealla ja valitse New (jos new harmaana, se on perustettu). Alas kirjoita koodi
    DbBarCode1.Visible := FCopy = 2;
    if Fcopy = 2 then
    Label39.Caption := 'Myyjän kappale'
    else
    Label39.Caption := 'Asiakkaan kappale';

Tässä ratkaisussa on yksi virhe. Jos tulostus tehdään polkua -> esikatsele -> tulostus esikatseluikkunasta, niin kappaleet tulotustuvat väärässä järjestyksessä johtuen siitä, että FCopy kasvaa jos esikatselussa arvo on 1.

Veloitusmuoto myyntitilauslomakkeelle

If Tilaukset['Veloitustapa']=0
   then Value := '-';
If Tilaukset['Veloitustapa']=1
   then Value := 'Laskutus / ' + MaksuEhto['Nimi'];
If Tilaukset['Veloitustapa']=2
   then Value := 'Tili';
If Tilaukset['Veloitustapa']=3
   then Value := 'Kassa';
If Tilaukset['Veloitustapa']=4
   then Value := 'Verkkopankki';
If Tilaukset['Veloitustapa']=5
   then Value := 'Luottokortti';
If Tilaukset['Veloitustapa']=6
   then Value := 'Postiennakko';
If Tilaukset['Veloitustapa']=7
   then Value := 'Tilisiirto';
If Tilaukset['Veloitustapa']=8
   then Value := 'Suomen Verkkomaksu';
If Tilaukset['Veloitustapa']=9
   then Value := 'Bussiennakko';
If Tilaukset['Veloitustapa']=10
   then Value := 'Lindorff lasku';
If Tilaukset['Veloitustapa']=11
   then Value := 'Klarna lasku';
If Tilaukset['Veloitustapa']=12
   then Value := 'Klarna tili';

Labelin arvon muuttaminen

Labelin arvoa voi muuttaa mm. OnGetText eventissä. Rutiini saa var parametrina Text muuttujan johon arvo pitää asetaa.

procedure Label1OnGetText(var text: String);
begin
  if Tilaukset[ 'Tuote' ] = '100' 
    text := 'tuote on 100'
  else
    text := 'Tuote ei ole 100';
 
end;

Huom OnGettext eventissä ei voi asetaa Label:n captionin arvoa suoraan, ajoitukset ei mene oikein ja arvot menevät todennäköisesti väärälle riville.

Katso myös

Reportbuilderin laajennus funktiot

Luokka__Tekninen palvelu
Luokka__Asennus ja määrittely