🔥 דף עזר למפתחי Priority
מהיר. נקי. מדויק. נכתב עבור מפתחי Priority אמיתיים.
🟦 פונקציות מערכת SQL
Priority מספקת פונקציות מערכת מובנות המתחילות ב‑SQL.. ניתן להשתמש בהן בטריגרים, פרוצדורות ודוחות.
SQL.DATE— תאריך ושעה נוכחייםSQL.DATE8— תאריך בלבדSQL.TIME— שעה נוכחיתSQL.DAY— מספר יום בשבועSQL.USER— מזהה משתמש פנימיSQL.ENV— חברה נוכחיתSQL.ENVLANG— שפת החברהSQL.WEBID— מזהה משתמש WEB (מספרי)SQL.CLIENTID— מזהה משתמש WEB (מחרוזת)SQL.LINE— מונה שורותSQL.TMPFILE— קובץ זמניSQL.GUID— GUID אקראיSQL.GROUP— קבוצת המשתמש
SELECT SQL.DATE, SQL.USER
INTO :now, :usr
FROM DUMMY;
🧮 משתני SQL
משתנים מתחילים ב‑: ויכולים להיות פרמטרים, משתני טופס או משתני מערכת.
:RETVAL— תוצאת השאילתה האחרונה:SCRLINE— שורת טופס נוכחית:PAR1–:PAR3— פרמטרים להודעות:FORM_INTERFACE— 1 בזמן טעינת טופס:FORM_INTERFACE_NAME— שם האינטרפייס:ACTIVATEREFRESH— רענון טופס לאחר הפעלה:KEYSTROKES— סימולציית מקשים:SQL.NET— 0 = Windows, 1 = Web:PRINTFORMAT— פורמט הדפסה:SENDOPTION— אפשרות שליחה:ISSENDPDF— האם PDF:WANTSEDOCUMENT— שליחה במייל:EXTERNAL.VARNAME— משתנה מ‑WINRUN
SELECT DOC
FROM DOCUMENTS
WHERE CURDATE >= (SQL.DATE - 24:00 * 3);
:TotalLines = (:RETVAL <= 0 ? 0 : :RETVAL);
🔤 פונקציות מחרוזת ו‑ODBC
STRCAT(a,b)— שרשורSUBSTR(str,start,len)— תת‑מחרוזתLENGTH(str)— אורךUPPER()/LOWER()
:first = 'First Text Here ' ;
:last = ' Last Text Here' ;
:full = STRCAT(TOLOWER(:first), ' ---> ',TOUPPER(:last));
output text:
first text here ---> LAST TEXT HERE
📁 קבצים והרצה
COPYFILE(from,to)— העתקת קובץMOVEFILE(from,to)— העברת קובץDELWINDOW 'f', (path)— מחיקת קובץEXECUTE(cmd)— הרצת פקודת מערכתLINK table TO fileUNLINK table
EXECUTE COPYFILE :TmpFile , '../../system/load/MyTmpFile.txt';
🧲 טריגרים בטפסים
טריגרים רצים אוטומטית כאשר המשתמש מבצע פעולות בטופס.
- PRE-FORM
- POST-FORM
- PRE-INSERT
- POST-INSERT
- PRE-UPDATE
- POST-UPDATE
- PRE-DELETE
- POST-DELETE
- PRE-INS-UPD-DEL
- POST-INS-UPD-DEL
🧪 פרוצדורות ולוגיקת שלבים
- SQLI — שאילתת SQL
- FORM — פתיחת טופס
- REPORT — הרצת דוח
- MESSAGE — הצגת הודעה
- INPUT — קבלת קלט
- GOTO — קפיצה
SELECT PARTNAME, PRICE
FROM PART
WHERE PRICE > :minprice
FORMAT;
/*- no price higher then :minprice found -*/
GOTO 555 WHERE :RETVAL <= 0 ;
🧩 סניפטים שימושיים
Cursor
/* -- Start Cursor -- */
DECLARE MyCursor CURSOR FOR
SELECT ....
OPEN MyCursor;
GOTO 10101 WHERE :RETVAL <= 0 ;
LABEL 10102 ;
FETCH MyCursor INTO .... ;
GOTO 10103 WHERE :RETVAL <= 0;
SELECT ...
LOOP 10102;
LABEL 10103 ;
CLOSE MyCursor ;
LABEL 10101 ;
/* -- End Cursor -- */
Get File Size
/* Example: Get file size using Priority tools */
:FILENAME = 'path/myfile.txt';
/* Create a temporary file to store the result */
SELECT SQL.TMPFILE INTO :tmp FROM DUMMY;
LINK STACK TO :tmp;
/* Run OS command that writes the size into the linked file */
EXECUTE GETSIZE :FILENAME, :tmp;
/* Read the result */
:FILESIZE = 0;
SELECT ELEMENT INTO :FILESIZE FROM STACK WHERE ELEMENT > 0;
UNLINK STACK;
Get File Date
/* Example: Retrieve file date using Priority tools */
:FILENAME = 'path/myfile.txt';
/* Prepare a temporary file to capture the output */
SELECT SQL.TMPFILE INTO :tmp FROM DUMMY;
LINK STACK TO :tmp;
/* Run OS command that writes the file date into the linked file */
EXECUTE GETDATE :FILENAME, :tmp;
/* Extract the result */
:FILEDATE = 0;
SELECT ELEMENT INTO :FILEDATE
FROM STACK WHERE ELEMENT > 0;
UNLINK STACK;
⚠️ כללי טבלאות ועמודות
- שם טבלה: עד 20 תווים
- טבלאות מותאמות: קידומת של 4 אותיות
- עמודות מותאמות: אותה קידומת
- סוגי עמודות: CHAR, INT, REAL, DATE, TIME, DAY
- להשתמש במפתח אוטו‑יוניק לקשרים
📘 המלצות Best Practice
- להשתמש במפתח אוטו‑יוניק לקשרים
- לא לעדכן טבלאות ישירות — רק דרך ממשק למסך או דרך טבלאות מקושרות (LINK)
- להשתמש ב‑
SQL.LINEלמיספור - להשתמש ב‑
SQL.TMPFILEלייצוא - לשמור על קידומת אחידה לכל ישות מותאמת