עד עתה עסקנו בעמודות המציגות את מה שמאחסנות עמודות הטבלה ותו לא. ניתן להציג בדוחות גם עמודות שאינן מופיעות בטבלאות אלא הן תוצאה של פעולה חשבונית על עמודות טבלה, המרה של מחרוזת כלשהי, קבוע מערכת כלשהו ועוד. במילים אחרות פונקציות.
כנסו למחולל הדוחות, ולעמודות הדוח. כשרוצים להכניס עמודה לדו"ח שהיא לא עמודת טבלה אלא פונקציה כלשהי, רושמים את רוחב עמודת הדוח בשדה "רוחב", נותנים לעמודת הדוח כותרת בשדה "כותרת חדשה" ויורדים למסך הנכד "עמודות הדוח הרחבה". בשדה "ביטוי\תנאי", ניתן לרשום כל פונקציה של פריוריטי. מספר הפונקציות הוא גדול. להלן רשימה לא מלאה שלהן:
שם |
פעולה |
פרמטרים |
טיפוס הערך המוחזר |
דוגמא |
SQL.ENV | מספר החברה הנוכחי | CHAR | demo | |
SQL.USER |
מספרו הפנימי של המשתמש הנוכחי. כלומר הערך של העמודה USER בטבלת USERS עבור המשתמש הנוכחי |
INT | ||
SQL.GROUP | מספרו הפנימי ראש קבוצת ההרשאות של המשתמש הנוכחי |
INT |
||
SQL.DATE | התאריך והשעה עכשיו | 8 DATE | 21/01/09 | |
SQL.DATE8 | התאריך היום | 14 DATE | 21/01/09 18:55 | |
SQL.TIME | השעה עכשיו | TIME | 18:55 | |
SQL.DAY | מספרו של היום הנוכחי בשבוע | INT | 6 | |
ROUND | עיגול מספר עשרוני. התוצאה היא המספר השלם הקרוב ביותר | REAL | INT | ROUND(ORDERITEMS.PRICE) |
ROUNDR |
כמו ROUND אלא שהתוצאה היא מספר עשרוני | REAL | REAL | ROUNDR(ORDERITEMS.PRICE) |
MINOP |
הערך המינימלי מבין שני מספרים | NUM, NUM | REAL | MINOP(ORDERITEMS.PERCENT, ORDERS.PERCENT) |
MAXOP | הערך המקסימלי מבין שני מספרים | NUM, NUM | REAL | MINOP(ORDERITEMS.PERCENT, ORDERS.PERCENT) |
EXP | חזקה | INT, INT | INT | EXP(3,2) |
SQRT | שורש – התוצאה מעוגלת למספר שלם | INT | INT | SQRT(4) |
SQRTR | שורש – התוצאה במספר עשרוני | REAL | REAL | SQRT(2.0) |
ABS | ערך מוחלט למספרים שלמים | INT | INT | ABS(ORDERITEM.BALANCE) |
ABSR | ערך מוחלט למספרים עשרוניים | REAL | REAL | ABS(ORDERITEM.BALANCE) |
REALQUANT | *המרת Shifted Integer למספר עשרוני | Shifted Integer | REAL | REALQUANT(INVOICEITEMS.TQUANT) |
INTQUANT | המרת מספר עשרוני ל Shifetd Integer | REAL | INT (Shifted Integer) | INTQUANT(1.0) |
ITOA | המרת מספר שלם למחרוזת | INT | CHAR | ITOA(TRANSORDER.LINE) |
ATOI | המרת מחרוזת למספר שלם | CHAR או RCHAR | INT | ATOI(PARTSPEC.SPEC7) |
RTOA | המרת מספר עשרוני למחרוזת | REAL,INT | REAL | RTOA(PORDERITEMS.QPRICE,2) – ממיר למספר עשרוני עם 2 ספרות אחרי הנקודה |
STRLEN | חישוב מספר התוים במחרוזת | (R)CHAR | INT | STRLEN(EXTFILES.EXTFILENAME) |
STRCAT | שרשור של שתי מחרוזות או יותר | (R)CHAR, (R)CHAR | CHAR | STRCAT(PART.PARTNAME, '-',PART.PARTDES) |
STRIND | מציאת תת מחרוזת – הפונציה מקבלת מחרוזת ושני מספרים. המספר הראשון מייצג את מקום התו ממנו מתחילה תת המחרוזת והמספר השני מייצג את מספר התווים בתת המחרוזת. | (R)CHAR,INT, INT | (R)CHAR |
STRIND('priority', 2, 3) = 'rio' |
RSTRIND | כמו STRDIND אלא שRSTRIND מתייחסת לתו הימני ביותר כתו הראשון וקוראת את המחרוזת מימין לשמאל | (R)CHAR,INT, INT | (R)CHAR | RSTRIND('priority', 2, 3) = 'rit' |
STRPIECE | "שבירת" מחרוזת לפי תו מסויים. הפונקציה מקבלת כקלט מחרוזת, תו "שובר", מספר המציין את כמות החלקים הרצויים בתוצאה ואת מספרו של החלק הראשון הרצוי בתוצאה | (R)CHAR, CHAR, INT, INT | (R)CHAR | STRPIECE('a.b.c.d.e.f.', '.', 3, 2) = 'c.d' |
ISALPHA | פונקציה שבודקת האם מחרוזת מכילה אותיות בלבד. מחזירה כתוצאה 0 אם לא, ו 1 אם כן | (R)CHAR | INT |
ISALPHA('lior') = 0 ISALPHA('lior balmas') = 0 |
ISPREFIX | פונקציה שבודקת האם מחרוזת אחת היא תחילית של מחרוזת שנייה. אם כן הפונקציה מחזירה 1. אם לא היא מחזירה 0. | (R)CHAR, (R)CHAR | INT |
ISPREFIX('pri', 'priority') = 1 ISPREFIX('zoom', priority') = 0 |
ISNUMERIC | פונקציה שבודקת האם מחרוזת מכילה מספרים בלבד. אם כן הפונקציה מחזירה 1. אם לא היא מחזירה 0. | (R)CHAR | INT |
ISNUMERIC('priority12') = 0 ISNUMERIC('12') = 1 |
ISFLOAT | פונקציה שבודקת האם מחרוזת היא מספר עשרוני. אם כן הפונקציה מחזירה 1. אם לא היא מחזירה 0. | (R)CHAR | INT |
ISFLOAT(10.2) = 1 ISFLOAT(10) = 0 |
TOUPPER | פונקציה שמקבלת מחרוזת באנגלית ומעבירה את כל התווים לאותיות רישיות. | (R)CHAR | (R)CHAR | TOUPPER ('priority') = 'PRIORITY' |
TOLOWER | פונקציה שמקבלת מחרוזת באנגלית ומעבירה את כל התווים לאותיות קטנות. | (R)CHAR | (R)CHAR | TOLOWER('abCdEFG') = 'abcdefg' |
DAY | פונקציה המחזירה את מספרו של היום בשבוע של תאריך כלשהו | DATE | INT |
DAY(01/01/00) DAY(SQL.DATE) DAY(ORDERS.CURDATE) |
MDAY | פונקציה המחזירה את מספרו של היום בחודש של תאריך כלשהו |
DATE |
INT | MDAY(01/01/00)
DAY(SQL.DATE) DAY(ORDERS.CURDATE) |
WEEK | פונקציה המחשבת את מספר השבוע בשנה של תאריך כלשהו | DATE | INT |
WEEK(INVOICES.IVDATE) |
WEEK6 | פונקציה המחשבת את מספר השבוע בשנה של תאריך כלשהון ומחזירה את השנה משורשרת למספר השבוע | DATE | INT | WEEK6(SQL.DATE) = 200905 |
MWEEK | פונקציה המחשבת את מספר השבוע בחודש של תאריך כלשהו | DATE | INT | MWEEK(DOCUMENTS.CURDATE) |
MONTH | פונקציה המחשבת את מספר החודש של תאריך כלשהו | DATE | INT | MONTH(DOCUMENTS.CURDATE) = 11 |
QUARTER | פונקציה המחשבת את מספר הרבעון של תאריך כלשהו | DATE | INT | QUARTER(SQL.DATE) /* בין 1 ל 4 */ |
YEAR | פונקציה המחשבת את מספר השנה של תאריך כלשהו | DATE | INT | YEAR(SQL.DATE) = 2009 |
BEGINOFMONTH | תאריך תחילת החודש של תאריך כלשהו | DATE | DATE |
BEGINOFMONTH(ORDERS.CURDATE) |
BEGINOFQUARTER | תאריך תחילת הרבעון של תאריך כלשהו | DATE | DATE | BEGINOFQUARTER(ORDERS.CURDATE) |
BEGINOFHALF | תאריך תחילת החציון של תאריך כלשהו | DATE | DATE | BEGINOFHALF(ORDERS.CURDATE) |
BEGINOFYEAR | תאריך תחילת השנה של תאריך כלשהו | DATE | DATE | BEGINOFYEAR(ORDERS.CURDATE) |
ENDOFMONTH | תאריך סוף החודש של תאריך כלשהו | DATE | DATE | ENDOFMONTH(TRANSORDER.UDATE) |
ENDOFQAURTER | תאריך סוף הרבעון של תאריך כלשהו | DATE | DATE | ENDOFQUARTER(TRANSORDER.UDATE) |
ENDOFHALF | תאריך סוף החציון של תאריך כלשהו | DATE | DATE | ENDOFHALF(TRANSORDER.UDATE) |
ENDOFYEAR | תאריך סוף השנה של תאריך כלשהו | DATE | DATE | ENDOFYEAR(TRANSORDER.UDATE) |
ATOD | המרת מחרוזת לתאריך. הפרמטר השני של הפונקציה קובע את הפורמט של התאריך כפי שהוא מופיע במחרוזת | (R)CHAR, CHAR | DATE | ATOD('22/01/2009', 'DD/MM/YYYY') = 22/01/09 |
DTOA | המרת תאריך למחרוזת. הפרמטר השני קובע את פורמט התארי. | DATE, RCHAR | (R)CHAR |
DTOA('ORDERITEMS.DUEDATE','DD-MMM-YY') = 25-ינו-09 |