ReportBuilderin SKJ funktiot
ReportBuilderillä voidaan tulostaa karkeasti ajatellen neljänlaista dataa:
- Kiinteä teksti (esim otsikot)
- Järjestelmämuuttujia (esim päivämäärät / sivunumerot jne)
- Tietokantakenttiä (esim tuotetiedot, jotka tulevat kannasta)
- Funktioiden tuottamaa informaatiota
Funktioiden selitys
Funktioiden selitys:
Jokaisen funktion kohdalla on seuraavantyyppinen selitys:
...
- Kenttä (=varastosaldotietueen kenttä)
- Tuotekoodi (=mistä tuotteesta halutaan varastosaldotietue)
- Varasto (=minkä varaston varastosaldotietue halutaan)
...
- Luo lomakkeelle vaikkapa Variable -tyyppinen komponentti (työkalurivillä laskimen näköinen kuva ja sen jälkeen klikkaa mihin komponentin haluat)
- Klikkaa luomaasi Variablea hiiren oikealla ja valitse Calculations..
Lisää haluamasi funktio avautuvaan ruutuun, esimerkiksi siten että:
Panel |
---|
Value := Varastosaldo('invpvm',Tuotteet['numero'],5); |
,joka palauttaa Variableen pipelinen Tuotteet kentän Numero -vastaavan tuotteen inventointipäivämäärä -kentän varaston 5 osalta.
Funktiot
AnsiCapitalize
Code Block |
---|
function AnsiCapitalize(Const s: String): String; |
Muuttaa tekstin sanojen alkukirjaimet isoiksi (huomioi skandit). Esim. kissan äidin häntä -> Kissan Äidin Häntä.
Panel |
---|
Esimerkki: Caption := AnsiCapitalize(Tuotteet['Nimi']); |
AsiakasTieto
Code Block |
---|
function AsiakasTieto(const Asiakas: Integer; const Kentta: String): Variant; |
Palauttaa parametrina annetun kentän arvon halutulle asiakkaalle (parametri Asiakas). Koskee siis vain asiakas -taulua, ei lainkaan asiakas2 -taulua.
Esimerkki:
Code Block |
---|
AsiakasTieto(1000, 'Nimi'); |
EanCodeOk
function EanKoodiOk(Const s: String): Boolean;
Palauttaa TRUE, jos annettu merkkijono on laillinen EAN/UPC -koodi ja FALSE, mikäli ei ole laillinen.
Esimerkki:
Code Block |
---|
If EanKoodiOk(Tuotteet['Numero'])=True Caption:='EAN-koodi: '+Tuotteet['Numero']; |
Code Block |
---|
function extractWord(SanaNro: integer; Merkkijono,erottimet: String):String |
Otaa merkkijonosta yhden sanan. Erottimet parametri voi pitää sisällään usean merkin. Peräkkäiset erottimet tulikitaan yhdeksi. esimerkiksi
Code Block |
---|
ExtractWord(2,'100;200;300',';') palauttaa '200' ja ExtractWord(3,'100,23;32,22;14,3',';,') palauttaa 32. |
...
s := 'Kuopio;Tampere;Jyväskylä;Helsinki'; |
...
for i:= 1 to WordCount(s,';') do |
...
showmessage(extractWord(i,s,';')); |
FileExists
Code Block |
---|
function FileExists(Const s: string): Boolean |
Palauttaa TRUE, jos parametrina annettu tiedosto on olemassa ja palauttaa FALSE, mikäli ko. tiedostoa ei löydy.
FilePathStr
Code Block |
---|
function FilePathStr:string |
Palauttaa kyseisen yrityksen tietokannan polkun. Polku tulee täsmälleen samassa formaatissa kuin se näkyy tiedosto->asetukset ruudulla.
AlvPros
Code Block |
---|
function AlvPros(const luokka: integer): Extended; |
Palauttaa alvprosentin annetulle luokalle.
Avoinkysely
Code Block |
---|
function Avoinkysely(const kysely, tietokanta: string): String; |
Kyselyssä viedään kokonainen sql kysely. Tietokanta voi olla tyhjä. Merkkijonoista kannattaa varmistaa ettei siellä ole heittomerkkejä. Mikäli alla olevassa esimerkissä tuotenumero olisi 91'92 tuottaisi kysely virheen.
...
Panel |
---|
procedure Label3OnGetText(var Text: String); var
s: string;
t: string;
begin t := DbPipeline1['TUOTE'];
t := StringReplace(t,chr(39),chr(39)+chr(39),3);
s := avoinkysely('select sum(summa) as summa from tuotemyy where tuote = '+chr(39)+t+chr(39),'');
if copy(s,1,7)='*error*:' then
text := 'Virhe kyselyssä '+s
else
Text := s;
end; |
GetAsTxt
Code Block |
---|
function GetAsTxt(Const Asiakas: Integer; Const Otsikko:string):String; |
Hakee asiakkaan teksteistä annetulla otsikolla tekstin.
GetTryhmaNimi
Code Block |
---|
function GetTryhmaNimi(Const nro: Integer):String; |
Palauttaa tuoteryhmän nimen.
GetTuoteDoc
Code Block |
---|
function GetTuoteDoc(Const Tuote,Otsikko:string):String; |
Hakee tuotteen dokumentti -taulusta annetulla otsikolla dokumentin nimen.
GetTuoteKuva
Code Block |
---|
function GetTuoteKuva(Const Tuote: String; Jarjestys: Integer; Var kuvateksti: string):String; |
Hakee tuotteen kuvatekstin ja palauttaa kuvan tiedostonimen. Järjestys ilmoittaa järjestysavaimen.
Esimerkki artikkelissa Reportbuilder ohjeita
GetTuoteTxt
Code Block |
---|
function GetTuoteTxt(Const Tuote,Otsikko:string):String; |
Palauttaa tuotteen tekstin annetulla otsikolla.
KassaanMaksuStr
Code Block |
---|
function KassaanMaksuStr(const i: Integer): string; |
Palauttaa kassaanmaksun nimen (parametrin i pitää olla laillinen kassaanmaksun numero).
LuoPankkiviivakoodi
Code Block |
---|
LuoPankkiviivakoodi(const tilinro, viitenro: string; const erapaiva: TDateTime; const summa: Double; const tyyppi: Integer) |
- Tilinumero
- Viitenumero
- Eräpäivä
- Summa
- Tyyppi (2/4)
MaksutapaNimiStr
Code Block |
---|
function MaksuTapaNimiStr(const i: integer): string; |
Palauttaa maksutavan nimen (parametrin i on oltava laillinen maksutavan numero).
MaksuehtoNimiStr
Code Block |
---|
function MaksuehtoNimiStr(const i: integer): string; |
Palauttaa maksuehdon nimen (parametrin i on oltava laillinen maksuehdon numero).
MemoKoko
Code Block |
---|
function MemoKoko(Report:TppReport; s:string; fname:string; fsize:integer):Integer; |
Antaa arvion raportin yksiköissä mikä on annetun tekstin (s) korkeus fontilla jonka nimi on fname ja koko fsize.
MkNakyy
Code Block |
---|
function MkNakyy:Boolean; |
Kertoo onko järjestelmään määritelty markat näkyviin.
MuotoileVarastoSaldo
Code Block |
---|
function MuotoileVarastoSaldo(const Saldo:double; Const Pullokoko:Double):String; |
Muotoilee alkoholivarastosaldot tulostettavaan muotoon (esim. saldo 1.5, Pullokoko 50 cl -> tulee 1P 25).
MyyjaNimiStr
Code Block |
---|
function MyyjaNimiStr(const i: integer): string; |
Palauttaa myyjän nimen (parametrin i on oltava laillinen myyjän numero)
Nimi2Norm
Code Block |
---|
function Nimi2Norm(Const Str:string):String; |
Muotoilee nimen "normaaliin muotoon" esim. Koistinen Mika -> Mika Koistinen.
OnRavintola
Code Block |
---|
function OnRavintola:Boolean; |
Palauttaa TRUE, jos asetuksissa on ravintolabitti on päällä ja palauttaa FALSE, mikäli ei ole päällä.
OstoLajiStr
Code Block |
---|
function OstoLajiStr(const i: integer): string; |
Palauttaa ostolajin kuvauksen annetulla numerolla.
SenttiPyoristys
Code Block |
---|
function SenttiPyoristys(summa:Double):Double; |
Laskee lähimpään viiteen senttiin pyöristetyn summan (esim. annetaan parametriksi 10.53, tulos = 10.55).
SetReportParameter
Code Block |
---|
function SetReportParameter(Report:TppReport; Parameter:String; Value:Variant); |
SkjAsetusB
Code Block |
---|
function SkjAsetusB(Const asetusName:string):Boolean |
SkjAsetusS
Code Block |
---|
function SkjAsetusS(Const asetusName:string):String; |
Palauttaa skj:n perusasetuksia. Parametri voi olla jokin seuraavista:
...
- Tilinumero1
- Tilinumero2
- Tilinumero3
- iban1
- iban2
- iban3
- bic1
- bic2
- bic3
Esimerkki:
Code Block |
---|
Variable1.Value := SkjAsetusS('puh1'); |
StringReplace
Code Block |
---|
function StringReplace(const Mjono: string; const Mista,Mihin: string; const flags:integer): string; |
Korvaa merkkijonosta osia.
- MJono: tästä merkkijonosta etsitään ja korvataan
- Mista: Mikä merkkijono korvataan
- Mihin: Millä merkkijonolla korvataan
- Flags: 1 =Korvaa kaikki, 2 = ei vertaa kirjainkokoa, 3= molemmat
- Paluuarvo: korvattumerkkijono
esim
s := StringReplace('Joulupukki kävi kylässä korjaamassa SAHAPUKKIA','pukki','muori',3);
s on nyt Joulumuori kävi kylässä korjaamassa SAHAmuoriA
StrPad
Code Block |
---|
function StrPad(Const Str:string; Pituus:Integer; c:char):String; |
StrPvmToDispPvm
Code Block |
---|
function StrPvmToDispPvm(Const StringPvm:string):String; |
Muuttaa yyyymmdd muotoisen päivämäärän visuaalisempaan muotoon, esim. 20111224 -> 24.12.2011
StrPvmToDate
Code Block |
---|
function StrPvmToDate(Const StringPvm:string):DateTime; |
Muuttaa yyyymmdd päivän DateTime tyyppiksi
ToimEhtoNimiStr
Code Block |
---|
function ToimEhtoNimiStr(const i: integer): string; |
ToimittajaNimi
Code Block |
---|
function ToimittajaNimi(const Tunnus: String): string; |
Palauttaa toimittajan nimen jos se löytyy, muuten tyhjän.
ToimittajaTieto
Code Block |
---|
function ToimittajaTieto(const Tunnus, Kentta: String): Variant; |
Palauttaa parametrina annetun kentän arvon halutulle toimittajalle (parametri Tunnus).
- Esimerkki: ToimittajaTieto('1001', 'Nimi');
translate
Code Block |
---|
function translate(s:string; Kieli: Integer):string; |
TuoteOminaisuusArvot
Code Block |
---|
function TuoteOminaisuusArvot(const TuoteNro: String; const Tyyppi: Integer; const erotin: string; const myosarvonimet: Boolean): string; |
Funktio, jolla saadaan luettua tuotteen ominaisuudet ja niiden arvot.
...
Tällä on tarkoitus hakea multituotteen ominaisuuksia tulosteille (Tyyppi 2 = valikko).
TuoteRyhmaTieto
Code Block |
---|
function TuoteRyhmaTieto(const Nro: Integer; const Kentta: String): Variant; |
Palauttaa parametrina annetun kentän arvon halutulle tuoteryhmälle (parametri Nro).
- Esimerkki: TuoteRyhmaTieto(200, 'Nimi');
TuoteTieto
Code Block |
---|
function TuoteTieto(const numero, kentta: String): Variant |
Palauttaa parametrina annetun kentän arvon halutulle tuotteelle (parametri numero). Käyttää sekä tuote että tuote2 -tauluja.
Esimerkki: TuoteTieto('1234567890123', 'Hinta');
Tuoteviivakoodi
Code Block |
---|
function Tuoteviivakoodi(const Tuote: string; Nro:Integer): String; |
Haetaan tuotteen viivakoodi tuotenumerolla. Parametri tuote on tuotenumero ja parametri nro ilmoittaa sen, että haetaanko viivakooditaulusta lopusta alkuun (<0) vai alusta loppuun (>=0) Esimerkkinä myyntitilauksella vaikka Labelin OnGetText tapahtumassa
...
Text := TuoteViivakoodi( Tilaukset['Tuote'],0); |
Lajitelman viivakoodi tulee
Code Block |
---|
function Lajitelmaviivakoodi(const Tuote: string; Nro,id1,id2:Integer): String; |
Esimerkiksi ostotilauksella:
Panel |
---|
procedure BarCode1OnPrint;
begin
Barcode1.data := Lajitelmaviivakoodi(Tilaukset['Tuote'],0,Tilaukset['id1'], Tilaukset['Id2']);
end; |
Varastosaldo
Code Block |
---|
function varastosaldo(Const kentta, tuote: String; const varasto): varastosaldo; |
Hakee varastosaldotaulusta tietyn kentän, esim:
Panel |
---|
varastosaldo('invpvm',Tuotteet['numero'],5) |
Lajitelman varastosaldo
Code Block |
---|
function LajitelmanVarastosaldo(const kentta, tuote: string; const id1, id2, varasto: Integer): Variant; |
Hakee lajitelman varastosaldotaulusta tietyn kentän, esim haetaan minimi1 varastosta 5 5
Code Block |
---|
|
text := Lajitelmanvarastosaldo('minimi1', Tuotteet['numero'],Tilaukset['Id1'], Tilaukset['Id2'], 5); |
Lajitelman Nimi
...
Palauttaa annetun lajitelman nimen. Palauttaa pitkan nimen jos se on annettu, muuten "normaalin" lyhyen. esim alla otetaan lajitelma1 teksti ja perään kauttaviivalla mahdollinen 2 lajitelmaid nimi.
Code Block |
---|
|
procedure Label402OnGetText(var Text: String);
begin
Text := VariKokoNimiFunction(Tilaukset['Id1']);
if Tilaukset['Id2'] <> 0 then
text := text+'/'+VariKokoNimiFunction(Tilaukset['Id2']);
end; |
UlosMaksuStr
Code Block |
---|
function UlosMaksuStr(const i: Integer): string; |
UnixToDateTime
Code Block |
---|
function UnixToDateTime(Const unixDate:Integer):DateTime; |
WeekOf
Code Block |
---|
function WeekOf(const dt: TDateTime): Integer; |
Palauttaa parametrina annetun päiväyksen (parametri dt) viikkonumeron (1-52).
Esimerkkejä:
- WeekOf(CurrentDateTime) -> palauttaa nykyisellä hetkellä olevan päiväyksen viikkonron
- WeekOf(EncodeDate(2011, 2, 1)) -> palauttaa vuoden 2011 helmikuun ensimmäisen päivän viikkonron
WordCount
function WordCount(Teksti: String; erotin: String): Integer
...