PANTHEON™ navodila

 Kazalo
 Glavna stran - Dobrodošli v PANTHEON navodila
[Collapse]PANTHEON
 [Collapse]Vodiči za PANTHEON
  [Expand]Vodič po PANTHEON-u
  [Expand]Vodič po PANTHEON Farming
  [Expand]Vodič po PANTHEON Retail
  [Expand]Vodič po PANTHEON Vet
 [Collapse]Uporabniški priročniki za PANTHEON
  [Collapse]Uporabniški priročnik za PANTHEON
   [Expand]Kako začeti?
   [Expand]Pogosta vprašanja o PANTHEON-u (F.A.Q.)
   [Expand]Uporabniški priročnik za ePoslovanje
   [Collapse]Nastavitve
    [Expand]Subjekti
    [Expand]Identi
    [Expand]POS
     Proizvodnja
    [Expand]Proizvodnja
    [Expand]Zaposleni
     Koledar
     Koledar
    [Expand]Računovodstvo
     Carina
     Carina
    [Collapse]Program
     [Expand]Vrste dokumentov
      Poročila
      Oblike izpisov
      Besedila za vrste dokumentov
      Dokumentna besedila
      Teksti za vrste dokumentov
      Teksti za dokumente
      Metode dostave
      Načini dostave
     [Expand]Kartice zaupanja
      Dashboard komponentov
     [Expand]Administratorska konzola
      Pregledi poročil
     [Collapse]Gradniki nadzorne plošče
      [Collapse]Program
       [Collapse]Izpisi v PANTHEON-u
        [Expand]Skripta
        [Expand]Funkcije
        [Expand]Tabele in poizvedbe
        [Expand]Objekti
        [Expand]Nastavitve
        [Expand]Zgradba izpisa
        Vnos nove vrste dokumenta
        Vnos nove oblike izpisa
       [Expand]Administratorska konzola
        Nov format tečajne liste
      Poročila nadzorne plošče
      Ad-Hoc Analize
      ARES
      Ad-hoc analize
     [Expand]ARES
      SQL Urejevalnik
     [Expand]SQL urejevalnik
    [Expand]Dokumentacija
    [Expand]Zamenjaj uporabnika
     Spremeni uporabnika
     Izhod iz programa
   [Expand]Naročila
   [Expand]Blago
   [Expand]Servis
   [Expand]Proizvodnja
   [Expand]Denar
   [Expand]Plansko-analitska orodja ZEUS
   [Expand]Kadri
   [Expand]Pomoč
   [Expand]Osebje
   [Expand]Arhiv uporabniških strani
  [Expand]Uporabniški priročnik za PANTHEON Retail
  [Expand]Uporabniški priročnik za PANTHEON Vet
[Collapse]PANTHEON Web
 [Collapse]Vodiči za PANTHEON Web
  [Expand]Vodič po PANTHEON Web Light
  [Expand]Vodič za PANTHEON Web Terminal
  [Expand]Vodič za PANTHEON Web Legal
  [Expand]Arhiv starih izdelkov
 [Collapse]Uporabniški priročniki za PANTHEON Web
  [Expand]Kako začeti
  [Expand]Uporabniški priročnik za PANTHEON Web Light
   Uporabniški priročnik za PANTHEON Web Terminal
  [Expand]Arhiv starih izdelkov
  [Expand]Uporabniški priročnik za PANTHEON Web Legal
[Collapse]PANTHEON Granule
 [Collapse]Vodiči za PANTHEON Granule
  [Expand]Granula Kadri
  [Expand]Granula Potni nalogi
  [Expand]Granula Dokumenti in Opravila
  [Expand]Granula Nadzorna plošča
  [Expand]Granula B2B Naročanje
  [Expand]Granula Servis na terenu
  [Expand]Inventar fiksnih sredstev
  [Expand]Granula Inventura skladišča
 [Collapse]Uporabniški priročniki za PANTHEON Granule
   Začetek
   Primer uporabe PANTHEON Granul v namišljenem podjetju
  [Expand]PANTHEON Granule in aktivacija
  [Expand]Granula Kadri
  [Expand]Granula Potni nalogi
  [Expand]Granula Dokumenti in opravila
  [Expand]Granula B2B naročanje
  [Expand]Granula Nadzorna plošča
  [Expand]Granula Servis na terenu
  [Expand]Granula Inventura osnovnih sredstev
  [Expand]Granula Inventura skladišča
   PANTHEON Granule - pogosta vprašanja in odgovori
   Arhiv
  
  
  
  
  
  
  
  
[Expand]Uporabniške strani

Load Time: 468,7553 ms
"
  1000220 | 200257 | 196653 | Localized
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

 

79176.gif

 

KRATEK OPIS SPODNJEGA PRIMERA: Primer uporabe funkcije IIF na izpisu 22G , ki je namenjen izključno za hrvaško zakonodajo in izpiše najprej naziv subjekta.

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

79176.gif

 

KRATEK OPIS SPODNJEGA PRIMERA: Primer uporabe GetFormValue, ki vrne skladišče na obračunu izdanih računov

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

79176.gif

 

KRATEK OPIS SPODNJEGA PRIMERA: Primer uporabe funkcije GetFormValue z datumom , ki vrne datum v formatu yyyy/mm/dd.


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

79176.gif

 

KRATEK OPIS SPODNJEGA PRIMERA: Primer uporabe funkcije GetFormValue pri delu z objektom, ki ne predstavlja besedila. V tem primeru nam vrne najpomembnejšo lastnost tega objekta.


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

 

79176.gif

 

KRATEK OPIS SPODNJEGA PRIMERA: Enostaven Primer uporabe  uporabe 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

 

79176.gif

 

KRATEK OPIS SPODNJEGA PRIMERA: Primer uporabe funkicje SQLExp za namene pridobivanja kraja pošte


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

79176.gif

 

KRATEK OPIS SPODNJEGA PRIMERA: Primer uporabe funkicje SQLExp pri delu 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

79176.gif

 

KRATEK OPIS SPODNJEGA PRIMERA: Primer uporabe funkicje SQLExp pri delu števili kot na primer merska enota.


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

 

79176.gif

 

KRATEK OPIS SPODNJEGA PRIMERA: Primer uporabe funkcije SQLExp za namene branja 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

79176.gif

 

KRATEK OPIS SPODNJEGA PRIMERA: Primer uporabe funkcije SQLExp s kompleksnim stavkom select naprimer na izpisu 3AR,ki vrne ali je delavec invalid ali ne


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

 

79176.gif

 

KRATEK OPIS SPODNJEGA PRIMERA: Primer uporabe funkcije SQLExp  kot konverter za 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 - sortiranje in grupiranje po polju

 

79176.gif

 

KRATEK OPIS SPODNJEGA PRIMERA: Primer uporabe funkcije SQLExp  za sortiranje in grupiranje po polju, ki se ne nahaja v datasetu.


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



  
 


 

Ali so bila ta navodila uporabna?
Vaše povratne informacije bodo prispevale k boljši pomoči.
Komentarji
Komentarji so izpostavljeni tudi na forumu.