בניית דוחות בפריוריטי – חלק 3

עד עתה עסקנו בעמודות המציגות את מה שמאחסנות עמודות הטבלה ותו לא. ניתן להציג בדוחות גם עמודות שאינן מופיעות בטבלאות אלא הן תוצאה של פעולה חשבונית על עמודות טבלה, המרה של מחרוזת כלשהי, קבוע מערכת כלשהו ועוד. במילים אחרות פונקציות.

כנסו למחולל הדוחות, ולעמודות הדוח. כשרוצים להכניס עמודה לדו"ח שהיא לא עמודת טבלה אלא פונקציה כלשהי, רושמים את רוחב עמודת הדוח בשדה "רוחב", נותנים לעמודת הדוח כותרת בשדה "כותרת חדשה" ויורדים למסך הנכד "עמודות הדוח הרחבה". בשדה "ביטוי\תנאי", ניתן לרשום כל פונקציה של פריוריטי. מספר הפונקציות הוא גדול. להלן רשימה לא מלאה שלהן:

 

 שם

פעולה

 פרמטרים

טיפוס הערך המוחזר

 דוגמא

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

0
0