DBM-raportti

 
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 )

Authored with help of DrExplain