DBM-raportti (.dbr) määritetään kirjoittamalla sen kuvaus tekstitiedostoon. Tämä dokumentti kuvaa raporttimääritystiedoston muodon ja sisällön.
Raportti
Raportti koostuu sivuittain toistuvista osista, kyselyfunktioista, tietokantakyselyistä ja niihin liittyvistä väliotsikoista ja välisummista. Paperille tulostuvien elementtien sijainnit annetaan senttimetrimitoin. Elementtejä ovat vakiotekstit, kyselyistä, välisummista ja parametreista saatavat arvot sekä viivat. Lisäksi järjestelmän avulla voidaan ohjata tarkoitukseen varattu "DLL" -tiedosto piirtämään kuvia tulostukseen. Järjestelmä avulla voidaan lisäksi antaa tulostus "DLL" -tiedoston ohjaamaksi.
Mitat
Kaikki mitat esitetään senttimetreinä. Raportin X-akseli kasvaa sivulla oikeaan, Y-akseli alaspäin. Sivujen kiinteät osat mitoitetaan todellisen paperisivun mittojen mukaan, kyselyfunktioiden, kyselyiden ja välisummien ja -otsikoiden mitat ovat suhteellisia sivun marginaaleihin nähden.
Yleistä raporttimääritystiedostosta
Raporttimääritys kirjoitetaan ASCII-tekstinä tiedostoon. Käytettävä merkkivalikoima on Windows-ANSI, joten ääkkösten takia määrityksen kirjoittamiseen on syytä käyttää jotain Windows-editoria, kuten PFE:tä tai Notepadia.
Kommentit
Raporttimäärittelytiedostossa voi esiintyä kommenttirivi milloin vain. Kommenttirivi alkaa, jos rivin ensimmäinen merkki on ';'-merkki. Kommentti jatkuu rivin loppuun.
Tyhjät rivit raporttimääritystiedostossa jätetään kommenttirivien lailla huomiotta.
Raporttimääritystiedoston osat
Raporttimääritystiedosto koostuu osista, jotka alkavat tunnisterivein:
Tunniste
|
Osa
|
>> DBM Report File vX.X
|
Tiedoston tunniste
|
>> DBM Report
|
Raportin yleiset asetukset
|
>> Parameters
|
Valinnainen parametrien määritys
|
>> FixedBlock_XX
|
1 - N valinnainen sivuittain toistuvien tekstien määritys
|
>> QueryFunction
|
0 - N kpl kyselyfunktioiden määritys
|
>> Query_XX
|
1 - N kpl raportin kyselyitä
|
>> Query_XX_Subtitle_XX
|
0 - N kpl valinnaisia väliotsikoita kyselylle
|
>> Query_XX_SubTotal_XX
|
0 - N kpl valinnaisia välisummia kyselylle
|
Tiedoston tunniste
Tiedosto tunnistetaan raporttimääritystiedostoksi, jos siinä on ennen muita määritysrivejä seuraavanlainen rivi:
>> DBM Report File vX.X
jossa X.X on raporttijärjestelmän versionumero, nyt 1.0
Yleiset asetukset
Raportin yleiset asetukset seuraavat tiedostotunnistetta, esimerkiksi:
>> DBM Report
|
|
|
|
Title
|
= Tarjoustulostus / KK
|
PageSize
|
= A4
|
PageOrientation
|
= Portrait
|
LeftMargin
|
= 1.0
|
RightMargin
|
= 1.0
|
TopMargin
|
= 3.0
|
BottomMargin
|
= 1.0
|
DefaultFont
|
= "Arial", 12.0, NOT_BOLD, NOT_ITALIC
|
Tunnistettuja sivukokoja on toistaiseksi vain yksi: A4.
Sivuasentoja on kaksi: Portrait ( pysty ) ja Landscape ( vaaka ).
Marginaalit lasketaan marginaalireunan sivun reunasta. Kaikki mitat annetaan senttimetrein, todellinen maksimitulostustarkkuus on 1/10 mm. Oletusfonttimääritys vaikuttaa kaikkiin tulostuviin osiin, joille ei ole erikseen määritetty oletus- tai käyttöfonttia.
Parametrit
Parametrit ovat valinnainen osa raporttimääritystä. Parametreillä ohjataan yleensä kyselyn "WHERE" -ehtoa. Esimerkiksi:
>> Parameters
|
|
|
|
Name_01
|
= id_begin
|
Description_01
|
= Ensimmäinen tarjous
|
Type_01
|
= Number
|
DefaultValue_01
|
= 1
|
Name_02
|
= id_end
|
Description_02
|
= Viimeinen tarjous
|
Type_02
|
= Number
|
DefaultValue_02
|
= 0
|
Parametrimääritykset on numeroitu 1 - 99, parametria käytettäessä siihen viitataan nimellä (Name).
Parametrin sallittuja tyyppejä ( Type ) ovat: Number ( numero ), String ( merkkijono ) ja Date ( päivämäärä ).
Oletusarvon muoto riippuu parametrin tyypistä:
Tyyppi
|
Oletusarvon muoto
|
Number
|
Numero, esim. 12.2
|
String
|
Merkkijono lainausmerkeissä, esim. "AAA"
|
Date
|
Yleinen muoto YYYY-MM-DD HH:MM:SS.SSSSSS, esim.
1995-09-15 00:00:00.000000 tai
1995-09-15 12:15:00.000000
|
Parametreihin viitataan syntaksilla $nimi, eli '$'-merkkiä seuraa välittömästi parametrin nimi.
Sivun kiinteät osat
Raportissa voi olla sivulla esim. sivunumero, sivujen lkm, päivämäärä tai jokin vakioteksti. Sivuittain toistuvat osat voidaan luokitella vain ensimmäiselle sivulle tuleviin, muille kuin ensimmäiselle sivulle tulostuviin ja kaikille sivuille tulostuviin.
Kiinteä lohko voi sisältää vakiotekstejä, viivoja, kuvia ja tulostuvia kenttiä. Kiinteän lohkon määritys alkaa esim.:
>> FixedBlock_01
RepeatedOn = ALL_PAGES
Toistuvuusmääritys voi olla ALL_PAGES ( kaikille sivuille ), FIRST_PAGE_ONLY ( vain ensimmäiselle sivulle ) tai NOT_ON_FIRST_PAGE ( muille kuin ensimmäiselle sivulle ).
Kentän määritys
Tässä on esimerkki vakiotekstin tulostavasta kentästä:
Field_01_Title
|
= DB-Manager
|
Field_01_Type
|
= Text
|
Field_01_Pos
|
= 1.0, 0.5, AlignLeft
|
Tämä tulostaa vasemmalle tasatun tekstin "DB-Manager" A4-sivun vasempaan yläkulmaan ( jos kyseessä kiinteän osan kenttä ).
Jokaisella kentällä on oltava Title (otsikko)-määritys.
Sallitut kentän tyypit ovat:
Tyyppi
|
Kuvaus
|
Text
|
Vakioteksti
|
Generated
|
Systeemin antama teksti
|
SubQuery
|
Alikyselymääre Name-kentässä antaa tekstin
|
Query
|
Arvo kyselystä tai parametristä
|
Calculated
|
Välisumman laskettu arvo
|
Jos tyyppi on Generated, pitää kentällä olla myös alityyppi:
Field_01_AutoType = Pagenum
Sallitut alityypit ovat:
AutoType
|
Merkitys
|
Pagenum
|
Sivunumero
|
TotalPages
|
Sivujen lukumäärä
|
Date
|
Päivämäärä
|
Time
|
Aika: HH:MM
|
Kentän sijainti annetaan muodossa: X, Y, tasaus; Tasaus vaihtoehtoja ovat AlignLeft ( tasaa vasemmalle, yleensä tekstikentät ), AlignRight ( tasaa oikealle, yleensä numerokentät ), AlignCenter ( tasaa keskelle ).
Kirjasin(fontti)-määritys ei ole pakollinen. Sitä käytetään korvaamaan oletusfontti kentän kohdalla. Esim.:
Field_01_Font = "Arial", 14.0, NOT_BOLD, NOT_ITALIC
Viivan määritys
Esimerkkiviiva:
Line_01_Begin
|
= 0.0, 6.8
|
Line_01_End
|
= 18.0, 6.8
|
Line_01_Thickness
|
= 1
|
_Begin tarkoittaa viivan alkupisteen X- ja Y-koordinaatteja viivan sisältävässä kiinteässä lohkossa, kyselyssä, väliotsikossa tai välisummassa, _End tarkoittaa loppupistettä samassa lohkossa. Paksuusmääritys on valinnainen, oletus on 1.
Kuvan määritys
Kuvan piirtäminen tapahtuu DB-Managerin toimittaman "DLL" -tiedoston avulla. Kuvan määrittää kolme riviä:
Picture_01_DrawUsing = dbmddraw.dll, dbmddraw_draw_stub( $id1 )
Jossa nimetään kuvan piirtävä DLL-kirjasto ja käytettävän funktion nimi ja sille annettavat parametrit. Kuvan parametrit on tässä herkin kohta: ne on annettava oikein.
Picture_01_LeftTop = 0.0, 1.4
kertoo kuvan vasemman yläkulman sijainnin kuvan sisältävässä lohkossa ja
Picture_01_RightBottom = 3.7, 5.1
kertoo kuvan oikean alakulman sijainnin kuvan sisältävässä lohkossa.
Kyselyfunktiot
Kyselyfunktio on 0 - N kpl dataa tulostava alikysely, jota voidaan erikseen kutsua varsinaisen kyselyn tuottaessa rivillisen dataa.
Esimerkki:
>> QueryFunction
|
|
|
|
Name
|
= print_row_prop
|
VerticalSpace
|
= 0.5
|
Parameter_01_Name
|
= prop_id
|
Parameter_01_Type
|
= String
|
Querytext_01
|
= SELECT Text
|
Querytext_01
|
= FROM LANGTEXT
|
Querytext_01
|
= WHERE ID = $prop_id
|
Field_01_Title
|
= Ominaisuuden kuvaus
|
Field_01_Type
|
= Query
|
Field_01_Name
|
= #1
|
Field_01_Pos
|
= 8, 0.0, AlignLeft
|
Kyselyfunktiolla voi olla on parametrejä, joihin sijoitetaan arvot kyselyssä kutsuhetkellä. Kyselyfunktio tulostaa siinä mainitut kenttä- ja viivamääritykset aiha löytäessään uuden rivin dataa.
Katso seuraavaa kohtaa "Kyselyt", jossa kuvataan kyselyfunktion kutsumekanismi.
Kyselyt
Kysely on raportoinnin perusyksikkö. Kyselyn määrittää SQL-kielinen hakulause. Kysely toistaa määritetyt kentät, viivat ja kuvat niin kauan, kuin kysely tuottaa uusia rivejä tietokannasta. Kyselyyn voidaan liittää väliotsikoita ja välisummia. Kyselyyn voidaan myös liittää rivitoimintoja, jotka kutsuvat kyselyfunktioita jokaisen datarivin tulostuttua.
Kyselyt voivat olla hierarkiassa siten, että ylemmän tason kyselyn tuottama rivi laukaisee alemman tason kyselyn suorittamisen ( kuva alla ):
Tässä on esimerkki kyselyn perustietojen määrittämisestä:
>> Query_02
|
|
|
|
Title
|
= Tarjoustekstit
|
QueryLevel
|
= 1
|
QueryText_01
|
= SELECT ID "ID", ID_PART "ID_PART", TEXT
|
QueryText_02
|
= "TEXT", ID_TEXT "ID_TEXT"
|
QueryText_15
|
= FROM N_OFFERT
|
QueryText_16
|
= WHERE ID = $OFFER_ID
|
QueryText_17
|
= AND ID_PART = $OFFER_PART
|
QueryText_18
|
= ORDER BY ID_TEXT
|
Offset
|
= 0.0
|
VerticalSpace
|
= 0.5
|
MinimumHeight
|
= 2.5
|
FillerField
|
= $ID_TEXT
|
PageBreak
|
= AFTER
|
SubpartOffset
|
= -4.2
|
RowAction_01
|
= CALL print_row_prop( $RPROPERTY0 )
|
DefaultFont
|
= "Courier New", 12.0, NOT_BOLD, NOT_ITALIC
|
Pakollinen QueryLevel määrittää, onko kyseessä alikysely. Jos on määritelty kysely, jonka numero on pienempi kuin tämän kyselyn ja tasonumero alempi, tämä kysely käyttäytyy alikyselyn tavoin ja hakulause muodostetaan ratkaisemalla '$'-viittaukset hierarkiassa ylemmän tason kyselyn uuden rivin kenttien arvoilla tai raportin parametreilla.
Kyselyn teksti eli SQL-lause kirjoitetaan riveille, jotka alkavat Querytext_. Numero XX on vain dokumentointia varten.
Valinnainen Offset määrittää ennen kyselyn tulostamista tehtävän siirtymän sivulla korkeussuunnassa.
VerticalSpace määrittelee kyselyn tuottaman rivin käyttämän korkeuden. Rivin elementtien on oltava tämän korkeustilan sisällä. Yläreunan kohdalla Y = 0 ja se kasvaa alaspäin. Leveystilaa on sivun leveys miinus vaakamarginaalit.
Valinnainen MinimumHeight määrittää kyselyn rivien yhteensä käyttämän minimi- korkeuden tulostuksessa.
Valinnainen FillerField määrittelee nimetyn numerosarakkeen aiheuttavan tyhjien datarivien lisäämisen tulostukseen, vaikkei kyseistä arvoa esiinny jatkuvana, siis kentän arvo tarkoittaa järjestystä datassa, mutta datassa on epäjatkuvuuskohtia, esim arvoa 3 seuraa arvo 6, jolloin järjestelmä tulostaa tyhjia datarivejä vastaamaan arvoja 4 ja 5 ja käyttämään siten tarvittavan korkeustilan tulostuksessa.
Valinnainen PageBreak määrittää sen, liittyykö kyselyn datan tulostamiseen sivunvaihto: sallittut määritukset ovat BEFORE ( ennen ), AFTER ( jälkeen ), BEFORE_AND_AFTER ( ennen ja jälkeen ).
Valinnainen SubpartOffset määrittää siirtymän sivulla pystysuunnassa ennen alikyselyiden ja kyselyfunktioiden suorittamista.
RowAction_XX -määritykset ovat kyselyfunktiokutsuja, jotka tapahtuvat järjestyksessä rivin tulostuttua.
Valinnainen DefaultFont -määritys korvaa oletusfontin, jota käytetään tämän kyselyn kenttien kanssa, jollei kentillä ole omaa fonttimääritystä. Jollei tätä määritystä ole, käytetään oletusfonttina raportin oletusfonttia.
Kyselyn tulostuksen määritys seuraa yleisten piirteiden määrityksen jälkeen. Kyselyyn voi kuulua kenttiä, viivoja ja kuvia.
Väliotsikot
Väliotsikko on kyselyyn liittyvä selkeyttävä tulostus kenttiä, viivoja tai kuvia. Väliotsikko voi toistua ennen kyselyn dataa, datan aikana esimerkiksi jonkin kentän arvon muutoksen tai sivunvaihdon yhteydessä tai datan jälkeen. Esim.:
>> Query_01_Subtitle_01
|
|
|
|
RepeatedOn
|
= NewPage
|
RepeatField
|
= $ID
|
VerticalSpace
|
= 1.6
|
Väliotsikon mahdolliset toistuvuusmääreet ovat:
Määre
|
Merkitys
|
|
|
Before
|
Tulostuu ennen dataa
|
After
|
Tulostuu datan jälkeen
|
NewPage
|
Tulostuu ennen dataa ja jokaisen sivunvaihdon jälkeen ensimmäiseksi sivulle
|
NewValue
|
Tulostuu RepeatField-määrityksessä nimetyn kentän jokaisen arvon muutoksen yhteydessä, myös ennen dataa
|
VerticalSpace toimii kuten kyselyiden kohdalla.
Väliotsikko koostuu kentistä, viivoista ja kuvista.
Välisummat
Välisumma tulostaa kyselyn datasta laskettuja kumuloituvia numeroarvoja. Välisumma voidaan määrittää laskennalliseksi yhtälöksi eri kenttien arvoista ja vakioarvoista. Välisumma voi tulostua datasta riippuen jonkin kentän arvon muuttuessa tai sivunvaihdon yhteydessä tai datan jälkeen. Esim.:
RepeatedOn
|
= NewValue
|
RepeatField
|
= $ID_ROW
|
VerticalSpace
|
= 0.7
|
CalcRef_01
|
= calc_of_quantities
|
CalcScope_01
|
= FROM_BREAK
|
Calc_01_01
|
= $QUANTITY
|
Calc_01_02
|
= - 1.0
|
Tämä välisumma laskee kyselyssä olevan kentän 'QUANTITY' arvot jokaiselta riviltä yhteen vähentäen 1.0 joka rivin kohdalla. Välisumma nollautuu aina, kun kyselyssä olevan ID_ROW-kentän arvo muuttuu.
RepeatedOn ja RepeatField toimivat kuten edellä väliotsikoiden kohdalla, paitsi ettei Before-määritys ole sallittu ( mielekäs ).
VerticalSpace on kuten kyselyn kohdalla.
Välisumma koostuu laskentamääreistä ja kenttämääreistä.
CalcRef_XX määrittää laskentakaavalle referenssinimen, johon viitataan kuten parametreihin: $kaava1 tarkoittaa kaava1 -laskentakaavan arvoa.
CalcScope_XX määrittää laskennan aloituspisteen: sallittuja arvoja ovat FROM_BEGIN ( koko kyselyn ensimmäisestä rivistä alkaen ), FROM_BREAK ( välisumman RepeatField-kentän viimeisestä arvonmuutoksesta alkaen ).
Calc_XX_YY -määreet esittävät käytetyn laskentakaavan: Ne summaavat jokaisen uuden datarivin kohdalla referenssiin ilmaistun yhtälön tuottaman arvon.
Ensimmäisellä kaavarivillä on joko vakioluku tai kenttäreferenssi ( $name ), muilla '+', '-', '/' tai '*'-merkin ( operandin ) jälkeen joko vakioluku tai kenttäreferenssi.
DLL-kyselyt
Kokonaisen kyselyn tuottama data voidaan ladata DLL-kirjastosta. Tällöin kyselymäärityksessä annetaan kentät, viivat ja kuvamääreet, joita kysely käyttää ja kerrotaan mikä DLL-tiedosto ja mikä sen funktio hoitaa annettua tulostusmääritystä käyttäen datan tulostamisen paperille.
Esimerkki:
>> Query_02
Title = Profiilit tms.
QueryLevel = 1
MasterDLL = "dbrprof1.dll", dbrprof_blocks( $sort_begin, $sort_end )