PANTHEON™ Help

 Toc
 Početna stranica - PANTHEON uputstva
[Collapse]PANTHEON
 [Collapse]PANTHEON priručnici
  [Expand]Vodič po Datalab PANTHEON FarmAccounting
  [Expand]Vodič po PANTHEON Retail
  [Expand]Vodič po DataLab PANTHEON™
  [Expand]Vodič po PANTHEON VET
 [Collapse]PANTHEON korisnički priručnici
  [Collapse]Korisnički priručnik za DataLab PANTHEON
   [Expand]Kako započeti?
   [Expand]Uobičajena pitanja o PANTHEON ( F. A. Q. )
   [Expand]ePoslovanje - korisnički priručnik
   [Collapse]Postavke
    [Expand]Subjekti
    [Expand]Artikli
    [Expand]POS
    [Expand]Program
     Proizvodnja
    [Collapse]Program
     [Collapse]Ispisi u Pantheonu
      [Expand]Postavke
      [Expand]Skripta
      [Expand]Tabele i sql query
      [Expand]Objekti
      [Expand]Oblikovanje izvještaja
      [Expand]Funkcije
      Unos nove vrste dokumenta
      Unos novog oblika ispisa
      Korištenje funkcije "Trenutni korisnik"
     [Expand]Administratorska konzola
      Novi format kursne liste
     [Expand]ARES
     [Expand]SQL editor
    [Expand]Dokumentacija
    [Expand]Računovodstvo
     Kalendar
    [Expand]Zaposleni
    [Expand]Carina
     Promijeni korisnika
   [Expand]eFiskalizacija RS
   [Expand]Narudžbe
   [Expand]Roba
   [Expand]Proizvodnja
   [Expand]Servis
   [Expand]Kadrovi
   [Expand]Novac
   [Expand]Plansko-analitički alati ZEUS
   [Expand]Licencni ugovor
   [Expand]Pomoć za PANTHEON
   [Expand]Osoblje
   [Expand]Verzije programskog paketa DataLab Pantheon™
  [Expand]Korisnički priručnik za PANTHEON Vet
  [Expand]Korisnički priručnik za PANTHEON Maloprodaju
  [Expand]Korisnički priručnik za PANTHEON Farming
[Collapse]PANTHEON Web
 [Collapse]Vodiči po PANTHEON Web
  [Expand]Vodič za PANTHEON Web Terminal
  [Expand]Vodič po PANTHEON Web Light
  [Expand]Vodič za PANTHEON Web Legal
  [Expand]Arhiva starih proizvoda
 [Collapse]Korisnički priručniki za PANTHEON Web
  [Expand]Kako započeti s programom PANTHEON Web
  [Expand]Korisnički priručnik za PANTHEON Web Light
   Korisnički priručnik za PANTHEON Web Terminal
  [Expand]Korisnički priručnik za PANTHEON Web Legal
  [Expand]Arhiva starih proizvoda
[Collapse]PANTHEON Granule
 [Collapse]Vodič za PANTHEON Granule
  [Expand]Granula Kadrovi
  [Expand]Granula Putni nalozi
  [Expand]Granula Dokumenti i zadaci
  [Expand]Granula Nadzorna ploča
  [Expand]Granula B2B naručivanje
  [Expand]Granula Servis na terenu
  [Expand]Inventar Fiksne Imovine Granula
  [Expand]Granula Inventura skladišta
 [Collapse]Korisnički priručnik za PANTHEON Granule
   Početak
   Primjer korištenja PANTHEON Granula u fiktivnom preduzeću
  [Expand]PANTHEON Granule i aktivacija
  [Expand]Granula Kadrovi
  [Expand]Granula Putni nalozi
  [Expand]Granula Dokumenti i zadaci
  [Expand]Granula B2B Naručivanje
  [Expand]Granula Nadzorna ploča
  [Expand]Granula Servis na terenu
   PANTHEON Granule - česta pitanja i odgovori
  [Expand]Inventar Fiksne Imovine Granula
  [Expand]Inventar u skladištu granula
  [Expand]Arhiva
[Collapse]Korisničke stranice
  Test 2
  Test 3
  Test 5
  TEST_Kreiranje noveg zaposlenika 1000003067
  TEST_Kreiranje noveg zaposlenika 1000003067-MK
  TEST3_Kreiranje novog dokumenta 1000003410-SL
  TEST2_Uređivanje kontaktnih podataka 1000003415-SL
  Test
 [Collapse]Test za CG
   Test podređeni 1
  TEST_Kreiranje noveg zaposlenika 1000003067-BA
  TEST_Kreiranje novog zaposlenika 1000003067-SR
  TEST_Kreiranje noveg zaposlenika 1000003067_EU_ORIG
 [Collapse]Pantheon hosting
  [Expand]Hosting robot
  [Expand]DEMO hosting
  Porez ( cookies )
 [Collapse]Prijava na korisničke stranice
   Registracija za Pantheon korisnike
   Glavna stranica
   Prva posjeta korisničkom sajtu
  Novosti
  Uvod u Wiki
  Upute za stranicu izbornika
 [Collapse]Potpora
  [Expand]Tehnička podrška
   Podrška na daljinu za Host korisnike
  [Expand]Daljinska podrška
  Kako upotrebljavam i dopunjujem wiki ?
 [Collapse]Pomoć
   Pantheon Hosting
   Uporedba verzija pantheona
  [Expand]Dokumentacija
   Vsa navodila
   Video uputstva
   Video novosti
   Pitaj druge korisnike
   Postanite PANTHEON svetovalec
   Sve vijesti
   Svi događaji
   Pregled opomb i planova
   Plan
 [Collapse]Informacije
   Obavijesti
  [Expand]Nastavitev deviznih tečajev
 [Collapse]Moji podaci
   Ugovor o osvježavanju
   Podaci o kompaniji
  [Expand]Pooblaščene osobe
   Dovoljenja
   Lični podaci
   Kontaktni podatci
   Osveževalna pogodba
 [Collapse]Forum
   Spremljanje foruma
 [Collapse]Video
   Instruktivni videozapisi
   Video Ažuriranja
  Portal za razvijače
  Tržnica
 [Collapse]Wiki uputstva
  [Expand]Uvod u wiki
  [Expand]Pretraga po Wikiju
  [Expand]Uređenje Wiki-a
   Pripenjanje dokumentov

Load Time: 421,8705 ms
"
  1000220 | 200257 | 263443 | Review
Label

Funkcije

Primeri uporabe funkcij




V tem poglavju so predstavljeni primeri uporabe agregatnih funkcij, primer uporabe funkcije GetForValue, SQLEXP ter IIF. Primere uporabe funkcij, ki so napisane posebej za PANTHEON 5.5 in jih ni v standardnem FastReport-u pa smo razložili posebej v kategoriji Datalab Funkcije.


 


Podrobno razlago funkcij si lahko preberete v Vodiču po Datalab PANTHEON-u 5.5, v kategoriji Funkcije.



 

Primer uporabe funkcije IIF


Naslednji primer uporabe funkcije IIF je narejen na izpisu 22G, ki ga najdemo v programu v meniju Blago | DDV samo za hrvaško zakonodajo. Izraz izpiše najprej naziv subjekta. Če je vpisana tudi davčna številka, izpiše tudi to, in sicer v novo vrstico. Za prehod v novo vrstico smo uporabili zaporedje znakov LF (št. 13) in CR (št. 10).

[IIF(<qReportIzpis."acCode"> = '', <qReportIzpis."acSubject">,
<qReportIzpis."acSubject"> + Chr(13) + Chr(10)+ <qReportIzpis."acCode">)]


Če funkcijo IIF gnezdimo, hitro postane nepregledna, zato jo je bolje zamenjati s stavkom if v kodi. Koda, enakovredna zgornjemu izrazu, je

procedure Memo19OnBeforePrint(Sender: TfrxComponent);
begin
if (<qReportIzpis."acCode"> = '' then
  Memo19.Text := <qReportIzpis."acSubject">
else
  Memo4.Text := <qReportIzpis."acSubject"> + Chr(13) + Chr(10)+ <qReportIzpis."acCode">;
end;



 

Primer uporabe funkcije GetFormValue

 

Za primer uporabe funkcije GetFormValue zapišimo izraz, ki vrne skladišče na obračunu izdanih računov, ki je v programu v meniju Blago | Obračun izdanih računov | Obračun računov in razlike v ceni. Ime okna je PrometObracunIzdRac, ime vnosnega polja, v katerem izberemo skladišče, je fSkladisce.

[GetFormValue('PrometObracunIzdRac.fSkladisce')]

Imena nekaterih oken z dokumenti, so sestavljena iz osnove in končnice, ki predstavlja vrsto dokumenta. Če hočemo na izdaji blaga izpisati referenta, zapišemo izraz

[GetFormValue('PrometIzdDob3000.fReferentZap')]

Izpisoval se bo samo za vrsto dokumenta 3000, ne pa tudi za vse druge. Da se bo izpisoval za vse vrste dokumentov, ga moramo zapisati tako

[GetFormValue('PrometIzdDob'+<tbLookPoslDog."acDocType">+'.fReferentZap')]

Kjer dataseta tbLookPoslDog ni na voljo, lahko dobimo naziv okna iz številke dokumenta. Na naročilih kupcev zapišemo takole

[IIF(Copy(<qReportIzpisD."acKeyView">,Pos('-',
<qReportIzpisD."acKeyView">)+4,1) ='-',
GetFormValue('Naroc'+Copy(<qReportIzpisD."acKeyView">,Pos('-',
<qReportIzpisD."acKeyView">)+1,3)+'0.fReferentZap'),
GetFormValue('Naroc'+Copy(<qReportIzpisD."acKeyView">,Pos('-',
<qReportIzpisD."acKeyView">)+1,4)+'.fReferentZap'))]



 

Primer uporabe funkcije GetFormValue z datumom



Funkcija GetFormValue vrne datum v formatu yyyy/mm/dd, običajno pa ga želimo imeti v formatu dd.mm.yyyy ali d.m.yyyy.

Najbolj znan primer, ko v datasetu ni podatkov, ki bi jih potrebovali, so obvestila o neporavnanih obveznostih, ki so v programu v meniju Denar | Obračuni | Odprte postavke.

Naslednji izraz vrne datum stanja v formatu yyyy/mm/dd:

[GetFormValue('GKOdprtePostavke.fDatumStanja')]

Izraz ima še pomanjkljivost, da v primeru, ko datum ni vpisan, izpiše 1900/01/01.
Pomagamo si tako, da pred izpisom s funkcijo IIF preverimo, ali je datum vnesen:

[IIF(GetFormValue('GKOdprtePostavke.fDatumStanja')= '1900/01/01','',
GetFormValue('GKOdprtePostavke.fDatumStanja'))]


Če hočemo izpisati datum v formatu dd.mm.yyyy, moramo spremeniti vrstni red številk v izpisu:

[IIF(GetFormValue('GKOdprtePostavke.fDatumStanja') ='1900/01/01','',
Copy(GetFormValue('GKOdprtePostavke.fDatumStanja'),9,2)+'.'+
Copy(GetFormValue('GKOdprtePostavke.fDatumStanja'),6,2)+'.'+
Copy(GetFormValue('GKOdprtePostavke.fDatumStanja'),1,4))]


Datum stanja v formatu d.m.yyyy pa dobimo tako, da dan v mesecu in mesec še pretvorimo v številko in potem nazaj v besedilo:

 

[IIF(GetFormValue('GKOdprtePostavke.fDatumStanja') ='1900/01/01','',
IntToStr(StrToInt(Copy(GetFormValue('GKOdprtePostavke.fDatumStanja'),9,2)))
+'.'+IntToStr(StrToInt(Copy(GetFormValue('GKOdprtePostavke.fDatumStanja'),6,2)))
+'.'+Copy(GetFormValue('GKOdprtePostavke.fDatumStanja'),1,4))]

 

Primer uporabe funkcije GetFormValue - primer dela z objektom, ki ne predstavlja besedila




Funkcijo GetFormValue lahko uporabimo tudi za objekte, ki ne predstavljajo besedila. V tem primeru nam vrne najpomembnejšo lastnost tega objekta. Vrnjena vrednost običajno ni primerna za neposreden izpis, lahko pa jo uporabljamo na samem izpisu. Lahko npr. izpišemo besedilo, ki je v oknu izpisano pri tej vrednosti.

Kot primer vzemimo skupino radijskih gumbov z imenom grpGroupBy na novi konto kartici. Naziv okna je GLAccountCard. Za to vrsto objekta funkcija vrne lastnost ItemIndex, ki določa, kateri gumb je izbran. V našem primeru ta lastnost določa, kako naj se združujejo podatki in skrivajo pasovi na izpisu. Vrednost, ki jo vrne funkcija, zapišemo v spremenljivko nGroupBy in potem glede na njeno vrednost skrivamo pasove na izpisu, kot npr. v proceduri SubjektFooterOnBeforePrint.


  var nGroupBy: Integer;
  ...
  procedure SubjektFooterOnBeforePrint(Sender: TfrxComponent);
  begin
    if nGroupBy <= 1 then
      SubjektFooter.Visible := False;
  end;
  ...
  nGroupBy := GetFormValue('GLAccountCard.grpGroupBy');


 

Enostaven primer uporabe funkcije SQLExp




Naziv našega podjetja

[SQLexp('select S.acSubject from tHE_SetSubj S, tPA_SysParam P where S.acSubject = P.acOurCompany')]

Naslov subjekta Podjetje d.o.o.

[SQLexp('select acAddress from tHE_SetSubj where acSubject =''Podjetje d.o.o.''')]

 

Primer klica funkcije SQLExp


Kraj pošte našega podjetja

[SQLexp('select dbo.fHE_GetOurCompanyCity()')]


Nekaj bolj zapletenih primerov je na izpisu 04C, ki je v programu v meniju Blago | ECL/Intrastat | ECL – uvoz in na izpisu 3AR na izpisu personalne mape. V programu pridemo do njega tako, da v personalnih mapah, ki so v meniju Kadri | Personalne mape, kliknemo na gumb Izpisi.

 

Primer uporabe funkcije SQLExp - delo z datumskimi polji



Na kopijo izpisa 241, ki je v programu v meniju Blago | Izdaja | Dokument (npr. 3000 – Veleprodaja) dodamo saldo prejemnika računa na kontu 2200 na dan izstavitve računa. Pri tem je pomembno, da je datum formatiran v obliki yyyymmdd.

[SQLExp('SELECT SUM(anValDebit-anValCredit) from tHE_AcctTransItem where acAcct = 2200 and acSubject=''' + <qReportIzpisD."acReceiver"> + ''' and adDateDoc <= ''' + FormatDateTime('yyyymmdd',<qReportIzpisD."adDateInv">) + '''')]

 

Primer uporabe funkcije SQLExp - delo s števili

 


V tem primeru želimo na izpisu 156, ki je v programu v meniju Blago | Obračun materialnih prometov izpisati količino v alternativni merski enoti (EM2).

Ker nimamo na voljo faktorja za pretvorbo količine v primarni merski enoti (EM) v EM2, ga moramo dobiti iz šifranta merskih enot s pomočjo funkcije SQLExp.

To naredimo z naslednjim izrazom:

[SQLExp('SELECT anUMToUM2 from tHE_SetItem where acIdent = '''+ <qReportIzpis."acIdent">+'''')]

Zgornji izraz vrne število kot besedilo. Sedaj želimo izpisati količino, izpisano v EM2, zato moramo vrednost, ki smo jo dobili, s funkcijo dlStrToFloatDef pretvoriti v število. Potem še delimo količino v EM z dobljenim faktorjem, pri čemer zaradi preverjanja deljenja z nič, raje kot navadno deljenje, uporabimo funkcijo dlDiv. Na koncu dobimo:

[dlDiv(<qReportIzpis."anBegState">, dlStrToFloatDef(SQLExp('SELECT anUMToUM2 from tHE_SetItem where acIdent = '''+ <qReportIzpis."acIdent"> +''''), 1))]

 

Primer uporabe funkcije SQLExp - branje podatkov iz okna v programu


Naslednji primer lahko naredimo na kopijo izpisa 16B, ki je v programu v meniju Blago | Obračun izdanih računov | Obračun računov in razlike v ceni. Če je v oknu izbrano skladišče, izraz izpiše celotno zalogo identa, sicer izpiše zalogo samo v izbranem skladišču.

Okno v programu, iz katerega se zažene izpis, se imenuje PrometObracunIzdRac, vnosno polje, v katerem izberemo skladišče, pa ima naziv fSkladisce. Izraz, ki vrne besedilo v tem objektu, smo že spoznali:

[GetFormValue('PrometObracunIzdRac.fSkladisce')]

Najprej pogledamo, ali je izbrano kako skladišče. Če ni, se izvede prvi izraz SQLExp, ki vrne celotno zalogo izbranega identa v vseh skladiščih, sicer pa drugi, ki vrne zalogo identa samo v izbranem skladišču.

[IIF (GetFormValue('PrometObracunIzdRac.fSkladisce') = '',
SQLExp('select SUM (anStock) from tHE_Stock where acIdent = ''' +
<qReportIzpis."acIdent"> + ''''),
SQLExp('select anStock from tHE_Stock where acIdent = ''' +
<qReportIzpis."acIdent"> + ''' and acWarehouse = ''' +
GetFormValue('PrometObracunIzdRac.fSkladisce') + ''''))]


 

Primer uporabe funkcije SQLExp s kompleksnim stavkom select



Posebno obravnavo si zasluži izraz na izpisu 3AR, ki vrne ali je delavec invalid ali ne.

Ta podatek ni neposredno zapisan v bazi, ampak je v njej zapisana kategorija invalidnosti, in sicer v polju acDisabilityCode v tabeli tHR_PrsnHealth. Ker se kategorija invalidnosti posameznega delavca lahko spreminja, moramo dobiti tisto, ki je bila vpisana nazadnje. Datum spremembe invalidnosti je zapisan v polju adCreationDate v isti tabeli. Z naslednjim izrazom dobimo zadnji datum, ko se je spremenila kategorija invalidnosti za izbranega delavca.

[SQLExp('select max(adCreatonDate) from tHR_PrsnHealth where acWorker = ''' + <qryDelavec."acWorker"> + '''')]

Potem s spodnjim izrazom dobimo kategorijo invalidnosti delavca

[SQLExp('select acDisabilityCode from tHR_PrsnHealth where acWorker = ''' + <qryDelavec."acWorker"> + ''' and adCreatonDate = (select max(adCreatonDate) from tHR_PrsnHealth where acWorker = ''' + <qryDelavec."acWorker"> + ''')')]

Če v zgornjem izrazu polje acDisabilityCode zamenjamo z 'DA', izraz vrne 'DA', če je delavec invalid, sicer vrne prazen niz. Ker hočemo, da v primeru, ko delavec ni invalid, izraz vrne 'NE', damo izraz v pogojni stavek IIF in končno dobimo

[IIF(SQLExp('select ''DA'' from tHR_PrsnHealth where acWorker = ''' + <qryDelavec."acWorker"> + ''' and adCreatonDate = (select max(adCreatonDate) from tHR_PrsnHealth where acWorker = ''' + <qryDelavec."acWorker"> + ''' and acDisabilityCode > ''0'')') = 'DA','DA','NE')]

 

Primer uporabe funkcije SQLExp - prevajanje stavka iz MS-SQL v ORACLE


V kolikor konverter ne zna pravilno prevesti vsega si lahko pomagamo s funkcijo dlIsORA, kot naprimer;

Prve tri pozicije računa na izdaji blaga izpiše naslednji izraz

[IIF(dlIsORA(
SQLExp('select * from (select acIdent from tHE_MoveItem where acKey = ''' + <tbIzpisPrometPoz."acKey"> + ''' order by acKey, anNo') where rownum <=3'),
SQLExp('select top 3 acIdent from tHE_MoveItem where acKey = ''' + <tbIzpisPrometPoz."acKey"> + ''' order by acKey, anNo'))] 



 

Primer uporabe funkcije SQLExp - prevajanje stavka iz MS-SQL v ORACLE


Zelo neobičajna in koristna je uporaba funkcije SQLExp za sortiranje in grupiranje po polju, ki je ni v datasetu.

Za osnovo bomo vzeli izpis 164, ki je v programu v meniju Blago | Obračun izdanih računov | Obračun računov in razlike v ceni. Najprej ustvarimo kopijo, na kateri bomo delali. Podatke bomo grupirali po izdajatelju računa in sortirali po izdajatelju in številki računa.

Lastnosti Condition GroupHeaderja priredimo vrednost

SQLExp('select G.acIssuer from tHE_Move G where G.acKey = ''' + <qReportIzpis."acKey"> + ''''),

zamenjamo napis, ki opisuje podatek, po katerem grupiramo, za sam podatek pa vnesemo isto kot zgoraj, le da damo vse skupaj še v oglate oklepaje (kot je prikazano na sliki). Za razvrščanje v šifrantu izpisov napišemo:

(select G.acIssuer from tHE_Move G where G.acKey = P.acKey), G.acKey



  
 


 

Rate this topic
Was this topic usefull?
Comments
Comment will also bo visible in forum!