Rapportgenerator

Funktioner

I rapportgeneratorn kan du använda dig av olika operatorer och funktioner.

Dessa kan kombineras på ett antal olika sätt. Du kan kombinera olika funktioner med varandra, kombinera funktioner och operatorer, operatorer med fält, funktioner med fält eller endast använda funktioner.

Detta avsnitt går igenom vilka operatorer och funktioner du kan använda och hur de fungerar.

Operatorer

Operatorer kan vara numeriska, text, datum eller logiskt uppbyggda. I tabellen nedan används följande förkortningar:

n Numeriskt
t Text
d Datum
l Logiskt
Operator Användning Beskrivning
- n= - n Byter tecken på talet.
! 1=!1 Logiskt INTE. Används exempelvis tillsammans med fält som är kryssrutor (d v s antingen sann eller falsk). Kan även användas med andra fält.
Exempel:
Om du har !%Export så kommer det objektet att skrivas ut om Export inte är markerad.
Fungerar på samma sätt som INTE.
INTE 1=inte Logiskt INTE. Används exempelvis tillsammans med fält som är kryssrutor (d v s antingen sann eller falsk). Kan även användas med andra fält.
Exempel:
Om du har INTE %Export så kommer det objektet att skrivas ut om Export inte är markerad.
Fungerar på samma sätt som !.
^ n= n ^ n Ger ett tal upphöjd till ett annat. Du kan använda ett tal, fält som är numeriska eller blanda tal och ett fält som är numeriskt.
** n= n ** n Ger ett tal upphöjd till ett annat. Fungerar på samma sätt som ^.
/ n= n / n Dividerar två tal. Du kan använda ett tal, fält som är numeriska eller blanda tal och ett fält som är numeriskt.
* n= n * n Multiplicerar två tal. Du kan använda ett tal, fält som är numeriska eller blanda tal och ett fält som är numeriskt.
+ n= n + n
Adderar två tal. Du kan använda ett tal, fält som är numeriska eller blanda tal och ett fält som är numeriskt.
  t= t + t Skarvar ihop två texter. Om du i ett objekt vill ange två numeriska fält som ska skrivas efter varandra, måste du först göra om fältet till text.
  d= d + n Adderar ett antal dagar till datumet.
- n= n - n Subtraherar två tal. Du kan använda ett tal, fält som är numeriska eller blanda tal och ett fält som är numeriskt.
  d= d - n Minskar datumet med det antal dagar du anger.
  n= d - d Returnerar antalet dagar mellan två datum.
< l= t < t Är sann om text 1 är mindre än text 2.
  l= n < n Är sann om numeriska fältet/talet 1 är mindre än numeriska fältet/talet 2.
  l= d < d Är sann om datum 1 är mindre än datum 2.
> l= t > t Är sann om text 1 är större än text 2.
  l= n > n Är sann om numeriska fältet/talet 1 är större än numeriska fältet/talet 2.
  l= d > d Är sann om datum 1 är större än datum 2.
<= l= t <= t Är sann om text 1 är mindre än eller lika med text 2.
  l= n <= n Är sann om numeriska fältet/talet 1 är mindre än eller lika med numeriska fältet/talet 2.
  l= d <= d Är sann om datum 1 är mindre än eller lika med datum 2.
>= l= t >= t Är sann om text 1 är större än eller lika med text 2.
  l= n >= n Är sann om numeriska fältet/talet 1 är större än eller lika med numeriska fältet/talet 2.
  l= d >= d Är sann om datum 1 är större än eller lika med datum 2.
= l= t = t Är sann om de båda texterna är lika.
  l= n = n Är sann om de båda numeriska fälten/talen är lika.
  l= d = d Är sann om de båda datumfälten är lika.
<> l= t <> t Skilt från. Är sann om de båda texterna är olika. Fungerar på samma sätt som !=.
  l= n <> n Skilt från. Är sann om de båda numeriska fälten/talen är olika.
Fungerar på samma sätt som !=.
  l= d <> d Skilt från. Är sann om de båda datumen är olika. Fungerar på samma sätt som !=.

Exempel på användning:
<> kan t ex använda om du vill lägga in villkoret att objektet endast ska skrivas ut om levererat antal inte är 0. Då skriver du %Le- vant<>0 på villkor.
!= l= t != t Skilt från. Fungerar på samma sätt som <>.
  l= n != n Skilt från. Fungerar på samma sätt som <>.
  l= d != d Skilt från. Fungerar på samma sätt som <>.

Exempel på användning:
!= kan man använda om man exempelvis vill lägga in villkoret att objektet endast ska skrivas ut om det finns något artikelnr angivit på raden. Då skriver du %Artnr!=”” på villkor.
Innehåller l= t Innehåller t Kontrollerar om första texten innehåller andra texten.
BörjarMed l= t BörjarMed t Kontrollerar om första texten börjar med andra texten.
SlutarMed l= t SlutarMed t Kontrollerar om första texten slutar med andra texten.
OCH l= l OCH l Logiskt OCH mellan två logiska värden.
ELLER l= l ELLER l Logiskt ELLER mellan två logiska värden.

Funktioner

Dessa funktioner kan du använda i rapportgeneratorn:

Abs(nummer)

Funktionen ger det absoluta värdet av ett numeriskt värde, d v s beloppet utan hänsyn till tecken.

Parameter:  
nummer Numeriskt värde.
Resultat: Det absoluta, numeriska värdet av ett nummer.
Exempel: Abs(1,27) ger 1,27.
Abs (%FÄLT) ger 9,39 om %FÄLT=-9,39.

Avr(nummer [;decimal])

Utför en avrundning av ett numeriskt värde, med möjlighet att ange önskat antal decimaler. Avrundning sker till närmaste värde där decimaler 0-4 avrundas nedåt och 5-9 uppåt.

Parameter:  
nummer Numeriskt värde som ska avrundas.
decimal Numeriskt värde med önskat antal decimaler. Anges inte denna parameter avrundas nummer till ett heltal, d v s till ett numeriskt värde utan decimaler.
Resultat: Numeriskt värde med givet antal decimaler enligt ovan.
Exempel: %NUMMER=12,12345,
Avr(%NUMMER) ger 12.
Avr(%NUMMER; 4) ger 12,1235.

Dag(datum)

Plockar ut dagen ur datumet.

Parameter:  
datum Datumet som innehåller dagen.
Resultat: Dagen i datumet i numeriskt värde, beroende på månaden i intervallet 1-28/29/30/31.
Exempel: %DATUM=20XX-10-08,
Dag(%DATUM) ger 8.
Datum(), Datum(året; årsdagen) Datum(året; månad; dagen) eller Datum(datumtext)

Räknar fram ett datum utifrån olika parametrar. Du kan beräkna fram ett datum från året och årsdagen. Du kan också använda denna funktion för att jämföra ett datum med det beräknade datumet, där du hämtar året från ett datumfält och månaden från ett annat datumfält o s v. Du kan också i vissa fall göra om en text till datum.

Parameter: Olika parametrar kan anges beroende på vilka data som är tillgängliga.
Tre olika uppsättningar av parametrar är möjliga.
(1) året Ett numeriskt värde för år (t ex 20XX).
(1) årsdagen Numeriskt värde för årsdagen, i intervallet 1-365/366. (2)
(2) året Ett numeriskt värde för år (t ex 20XX).
(2) månad Numeriskt värde för månaden, i intervallet 1-12.
(2) dagen Numeriskt värde för dagen i intervallet 1-28/29/30/31.
(3) datumtext En text med datum på formen ”ÅÅÅÅMMDD” (år-månad-dag). Det är även tillåtet med en separator, t ex bindestreck.
Resultat: Datum enligt ovan beskrivna parametrar.
Exempel: (1)
%datum=20XX-1008,
Datum(Num(%datum)) ger 20XX-10-08.
%året=20XX;%DAGEN=32,
Datum(%året;%DAGEN) ger 20XX-02-01.

(2)
%ÅR=20XX,%MÅNAD=3,%DAG=21, Datum(%ÅR;%MÅNAD;%DAG) ger 20XX-03-21.

(3)
%text=“20XX1018“,
Datum(%text) ger 20XX-10-18.
Datum(“20XX-10-20“) ger 20XX-10-20.

DelText(text; start ;antal) eller DelText(text; start)

Denna funktion ger dig möjlighet att plocka ut en viss text ur en längre text. Du anger texten/fältet som informationen ska hämtas ifrån, startposition och antal tecken som ska komma med. Om du vill ha med hela ordet från och med den startposition som du har angivit, anger du inte antal tecken.

Parameter:  
text Text att kopiera från.
start Numerisk position i texten där kopieringen ska starta.
antal Antal tecken, i numerisk form, som ska kopieras. Anges inte denna parameter kopieras alla tecken från och med start till textens slut.
Resultat: En kopia på en del av text. Är text kortare än start blir resultatet blankt, skulle start+antal vara längre än text kopieras texten från start till slutet av text.
Exempel: %NAMN=“Henrik Sten“,
DelText(%NAMN;4) ger ”rik Sten”.

Fix(nummer)

Ger heltalsdelen av nummer.

Parameter:  
nummer Numeriskt värde som heltalsdelen ska beräknas ur.
Exempel: Fix(10,67) ger 10.

Gemen(text)

Ändrar texten så att den skrivs ut med små bokstäver, gemener.

Parameter:  
text Texten som ska översättas.
Resultat: En ny text där alla stora bokstäver översatts till små bokstäver.
Exempel: %NAMN=“OLLE NILSSON“,
Gemen(%NAMN) ger ”olle nilsson”.

Initial(text)

Ändrar text till små bokstäver, gemener, utom första bokstaven i varje ord som ändras till stor bokstav, versal.

Parameter:  
text Texten som ska översättas.
Resultat: En ny text där alla bokstäver översatts till små, utom första bokstaven i varje ord som översatts till stor bokstav.
Exempel: %NAMN=“OLLE BERG“,
Initial(%NAMN) ger ”Olle Berg”.

Kontrollsiffra(text)

Kontrollerar om en text med siffror har en riktig kontrollsiffra som sista siffra. Funktionen kan användas för person-, organisations-, PlusGiro- och bankgironummer. Endast siffror kontrolleras, d v s bokstäver och tecken, exempelvis bindestreck, ignoreras.

Parameter:  
Text En text som ska kontrolleras med avseende på kontrollsiffra.
Resultat: Logiskt värde, sant eller falskt. Sant (1) om sista siffran är korrekt som kontrollsiffra, Falskt (0) om siffran inte är korrekt. Om text inte innehåller någon siffra blir resultatet sant. Innehåller text endast en siffra, blir resultatet sant om siffran är 0, annars falsk.
Exempel: %PNR=”710603-7158”
Kontrollsiffra(%PNR) ger sant.
%BG=”895-0692”
Kontrollsiffra(%BG) ger falskt.

Längd(text)

Räknar antalet bokstäver och andra tecken i en text.

Parameter:  
text Texten för vilken antalet bokstäver och tecken ska räknas.
Resultat: Antalet tecken i texten (0..).
Exempel: %NAMN=“AnnaNilsson“,
Längd(%NAMN) ger 12.

Max(nummer)

Jämför ett valfritt antal numeriska värden och ger det högsta värdet.

Parameter:  
nummer Numeriskt värde som ska kontrolleras. Fritt antal numeriska värden kan anges.
Resultat: Det högsta numeriska värdet av parametrarna.
Exempel: Max(1;3;4;1;6;8;9;3) ger 9.

Med(nummer)

Beräknar medelvärdet av ett fritt antal numeriska värden.

Parameter:  
nummer Numeriskt värde som medelvärdet ska beräknas av. Fritt antal numeriska värden kan anges.
Resultat: Medelvärdet av parametrarna.
Exempel: Med(1;3;4;1;6;8;9;3) ger 4,375.

Min(nummer)

Jämför ett valfritt antal numeriska värden och ger det lägsta värdet.

Parameter:  
nummer Numeriskt värde som ska kontrolleras. Fritt antal numeriska värden kan anges.
Resultat: Det lägsta numeriska värdet av parametrarna.
Exempel: Min(1;3;4;1;6;8;9;3) ger 1.

Minuter(nummer)

Beräknar antalet minuter i ett numeriskt värde innehållande tid.

Parameter:  
Nummer Numeriskt värde innehållande tid där tiden räknas i sekunder sedan midnatt. Kan även användas tillsammans med funktionen Tid().
Resultat: Minutdelen av tid, det vill säga inom intervallet 0..59.
Exempel: %tid=16287
Minuter(%tid) ger 31.
Minuter(1000) ger 16.

Datorns klocka är 10.35.27. För att få datorns tid använder du funk- tionen Tid().
Minuter(Tid()) ger 35.

Månad(datum)

Ger månadsnummer ur ett datum.

Parameter:  
datum Datum som innehåller månaden.
Resultat: Ett numeriskt värde med månadens nummer (1-12).
Exempel: %FÖDDAT=1975-03-23,
Månad(%FÖDDAT) ger 3.

Månadsnamn(datum)

Ger månadens namn i klartext för ett givet datum.

Parameter:  
datum Datum för vilket månadens namn önskas.
Resultat: En text med månadens namn (Januari, Februari, Mars, etc).
Exempel: %FDATUM=20XX-03-23,
MånadsNamn(%FAKTDAT) ger ”Mars”.

NuDatum()

Läser av datorns egen kalender och ger datumet. Naturligtvis krävs att datorns klocka går rätt.

Resultat: Datumet innehållande datorns datum.
Exempel: Om datorns egen kalender har datumet 20XX-12-28.
NuDatum() ger 20XX-12-28.

Num(fält)

Gör en översättning av text, datum eller logisk till ett numeriskt värde.

Parameter:  
fält Valfri typ, för de olika typerna utförs översättningen på olika vis.
Resultat: Ett numeriskt värde som är beroende av typen hos parametern:
text En text översätts till ett nummer utifrån godkända tecken (siffror, ”-”, ”E”, ”,”). Innehåller texten andra tecken blir resultatet 0.
nummer Översätts inte, resulterar i parametern.
logisk Blir 1 om sant och 0 vid falsk.
Exempel: %PRIS=“123.45“ (text),
Num(%PRIS) ger 123,45.
%NAMN=“Henrik“ (text),
Num(%NAMN) ger 0.
%TAL=“-1,23“,
Num(%TAL) ger -1,23.
%LOGISK=1 (sann),
Num(%LOGISK) ger 1.

Om(villkor; sant_res; falskt_res)

Beroende av ett logiskt värde resulterar funktionen i något av alternativen sant_res eller falskt_res. Funktionen kan användas för att t ex tilldela texter vid logiska uttryck.

Ett exempel är Om(Kopia()=0;#faktura#;#fakkop#). Detta finns i fältet Funktion i våra standardmallar för fakturor. Det betyder att om kopian är 0 (d v s originalet) ska dokumenttexten för faktura skrivas ut, annars (d v s på kopiorna) ska dokumenttexten för fakkop skrivas ut.

Parameter:  
villkor Logiskt värde som anger vilken av parametrarna som funktionen ska resultera i.
sant_res Parameter av valfri typ som funktionen resulterar i om villkor är sant.
falskt_res Parameter av valfri typ som funktionen resulterar i om villkor är falskt.
Resultat: Något av värdena sant_res eller falskt_res.
Exempel: %BETALD=1, Om(%BETALD;“Fakturan betald“;“Fakturan obe- tald“) ger ”Fakturan betald”.

RadTextKod()

Returnerar koden för den radtext som representerar innehållet i en textrads benäm ningsfält.

Sekunder(nummer)

Beräknar antalet sekunder i ett numeriskt värde innehållande tid.

Parameter:  
Nummer Numeriskt värde innehållande tid där tiden ska räknas i sekunder sedan midnatt. Kan även användas tillsammans med funktionen Tid().
Resultat: Sekunddelen av tid, det vill säga inom intervallet 0..59
Exempel: %tid=16287
Sekunder(%tid) ger 27.
Sekunder(1000) ger 40.

Datorns klocka är 10.35.27. För att få datorns tid använder du funktionen Tid().

Sekunder(Tid()) ger 27.

Sida()

Sidnummer (inom blanketten).

Resultat: Nummer på aktuell sida (1 är 1:a sidan).
Exempel: Kan användas för att kontrollera om man är på 1:a eller sista sidan för att ändra vad som skrivs.
Sida()=1
Ger sann om första sidan.
Sida()=SidAntal()
Ger sann om sista sidan.

SidAntal()

Antal sidor för blanketten.

Resultat:

Antal sidor (1 om endast en sida).

Exempel: Se Sida().

Tecken(nummer)

Kontrollerar om ett nummer är positivt, noll eller negativt.

Parameter:  
nummer Numeriskt värde vars tecken ska kontrolleras.
Resultat: Ett numeriskt värde. Beroende av om nummer är positivt, noll eller negativt blir resultatet -1, 0 respektive 1.
Exempel: %ARTIKLNR=1865, Tecken(%ARTIKLNR) ger 1.
Tecken(0) ger 0.
Text(datum [;format]), Text(nummer [;format]), Text(logisk [;format]), Text(text [;format])
Omvandlar valfri parameter till en text.
Parameter: Fyra olika typer parametrar är möjliga.
(1) datum Datum som ska översättas till text.
(1) format En text som anger hur datumet ska formateras.

Följande nyckeltecken finns:
”Å” anger år. Antalet Å ger hur många siffror årtalet ska skrivas som (”ÅÅÅÅ” ger ”20XX”, ”ÅÅ” ger ”00”).
”M” anger månad. Antalet M anger hur månaden skrivs. ”M” ger 1..12, ”MM” ger 01..12,
”MMM” ger Jan, Feb, Mar, ..., ”MMMM” ger Januari, Februari, Mars,...
”D” anger dag. Antalet D anger hur dagen ska skrivas. ”D” ger 1-28/29/30/31,
”DD” ger 01-28/29/30/31.

Anges andra tecken i format skrivs dessa precis som de står.
Om du inte anger format, sker en formatering enligt ett fast format (”ÅÅMMDD”).
(2) nummer Ett nummer som ska översättas till text.
(2) format [T1000-sep] [decimalseparator] [Antal decimaler]. En text som anger hur numret ska formateras. Texten kan innehålla följande delar:
Tusentalsseparator, ska föregås av ”T” och kan vara alla tecken utom siffror.
Decimalseparator, kan vara alla tecken utom siffror. Antal decimaler, ett tal, som anger antalet decimaler.
Om du inte anger format, sker en formatering enligt ett fast format.
(3) logisk Ett logiskt värde som ska översättas till en text.
(3) format En text som anger hur det logiska värdet ska presenteras.

Ett nyckeltecken finns:
”#” anger att sant/falskt ska skrivas som ”J” respektive ”N” ”##” anger att sant/falskt ska skrivas som ”Ja” respektive ”Nej” Andra tecken i format kopieras till den nya texten.
Om du inte anger format, kommer resultatet att skrivas som ”Ja” res- pektive ”Nej”.
(4) text En text som ska formateras.
(4) format En text som anger hur text ska formateras.

”#” är nyckeltecken och anger att det i den resulterande texten ska bytas ut mot ett tecken ur text. Om du inte anger format, kommer resultatet att vara samma som parametern text.
Resultat: En text beroende av parametrarna, formaterad utifrån önskat format.
Exempel: För de olika typerna av parametrar.

(1)
%datum=20XX-10-20,
Text(%datum) ger en text ”20XX-10-20”. Text(%datum;“DD/MM-ÅÅ“) ger ”20/10-00”. Text(%datum;“D MMMM ÅÅÅÅ“) ger ”20 Oktober 20XX”.

(2)
%NUMMER=-12787,23567, Text(%NUMMER) ger ”-12787,23567” Text(%NUMMER; “T‘.3") ger ”-12‘787.235”.
“Sida:“+Text(Sida())+“ (“+Text(SidAntal())+“)“ ger t ex Sida: 1(4)

(3)
%NAMN=“Kalle Axelsson“,
Text(%NAMN) ger ”Kalle Axelsson”.
Text(%NAMN;"### Hej #####") ger ”Kal Hej le Axe”.

Texttid(nummer)

Ger tiden i timmar, minuter och sekunder av ett numeriskt värde.

Parameter:  
Nummer(antal sekunder efter midnatt)  
Exempel: Texttid(34341) ger 09.32.21. Texttid(Tid()) ger också 09.32.21 om datorns tid är 09.32.21.

Tid(nummer)

Ger datorns tid i sekunder efter midnatt.

Exempel: Datorns tid är 09.32.21
Tid() ger då 34341.

Timmar(nummer)

Beräknar antalet timmar i ett numeriskt värde innehållande tid.

Parameter:  
Nummer Numeriskt värde innehållande tid där tiden ska räknas i sekunder sedan midnatt. Kan även användas tillsammans med funktionen Tid().
Resultat: Timdelen av tid, det vill säga inom intervallet 0..59
Exempel: %tid=16287
Timmar(%tid) ger 4.
Timmar(1000) ger 0.

Datorns klocka är 10.35.27. För att få datorns tid så använder man funktionen Tid().
Timmar(Tid()) ger 10.

Typ()

Ger vilken typ av fält det är. Det kan vara N (numeriskt), T (text), L (logiskt) eller D (datum)

Exempel: Typ(%Benämning) ger T.
Typ(%Summa) ger N.

Vecka(datum; antal)

Ger veckonumret för datumet. Detta skriver ut sista siffran i året och därefter veckan, om du inte anger något antal. Följer standarden för veckoangivelse. Noll skrivs dock inte ut om det som ska skrivas ut börjar med noll. Du kan ange längd på 2 - 6 tecken.

Parameter:  
Datum  
Exempel: %Levdatum är XX0122
Vecka(%Levdatum) ger X03
%Levdatum är XX0122
Vecka(%Levdatum) ger 3

VeckaText(datum; antal)

Samma som Vecka(datum; antal) förutom att funktionen även skriver ut 0 om årets sista siffra är 0. Om du inte anger något antal blir det 3 siffror.

Parameter:  
Datum  
Exempel: %Fdatum är 110122
VeckaText(%Levdatum;4) ger 1103

VeckoDag(datum)

Veckodagen för ett datum.

Parameter:  
datum Ett datum för vilket veckodagen önskas.
Resultat: En text för veckodagen (”Måndag”, ”Tisdag”, ”Onsdag”,...)
Exempel: %datum=20XX-10-06,
VeckoDag(%datum) ger ”Fredag”.

Versal(text)

Ändrar texten till stora bokstäver.

Parameter:  
text En text som ska översättas till stora bokstäver.
Resultat: En ny text där alla små bokstäver översatts till stora bokstäver.
Exempel: %NAMN=“olle nilsson“,
Versal(%NAMN) ger ”OLLE NILSSON”.

Välj(nummer;par1;par2)

Ger ett visst text/fält av flera. Först anger man vilken text/fält som ska plockas och därefter texterna/fälten.

Parameter:  
nummer Numerisk parameter som anger vilken av de följande parametrarna som funktionen ska resultera i.
par1, par2 Valfri typ som funktionen ska göra urval bland. Fritt antal parametrar av olika typer kan användas.
Resultat: Vald parameter, vilken som väljs beror av nummer. Är nummer större än antalet parametrar blir resultatet en text utan något innehåll.
Exempel: %nummer=3, %Namn=”Knut”, %Enamn=”Olsson”, %Tel=”0123- 123 46.
Välj(%nummer;%Namn;%Enamn;%Tel) ger 0123-123 46.

År(datum)

Ger året ur ett datum.

Parameter:  
datum Datumet som innehåller året.
Resultat: Ett numeriskt värde med årets nummer.
Exempel: %FÖDDAT=1975-03-23,
År(%FÖDDAT) ger 1975.

ÅrsDag(datum)

Ger vilken årsdag datumet innehåller.

Parameter:  
datum Datum för vilket ordningsnumret för dagen önskas.
Resultat: Numeriskt värde med dagens ordningsnummer under året (1..365/ 366)
Exempel: %FÖDDAT=1995-10-09,
ÅrsDag(%FÖDDAT) ger 283.