🔥 דף עזר למפתחי 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 file
  • UNLINK 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 לייצוא
  • לשמור על קידומת אחידה לכל ישות מותאמת