๐ฅ Priority Software Developer Cheat Sheet
Fast. Clean. Accurate. Written for real Priority developers.
๐ฆ SQL System Functions
Priority exposes builtโin SQL functions prefixed with SQL.. These return system values usable in triggers, procedures, and reports.
SQL.DATEโ current date & timeSQL.DATE8โ current date onlySQL.TIMEโ current timeSQL.DAYโ weekday numberSQL.USERโ internal user IDSQL.ENVโ current companySQL.ENVLANGโ current company languageSQL.WEBIDโ current web user id (number)SQL.CLIENTIDโ current web user id (string)SQL.LINEโ row counterSQL.TMPFILEโ path to temp fileSQL.GUIDโ random GUIDSQL.GROUPโ current user Group
SELECT SQL.DATE, SQL.USER
INTO :now, :usr
FROM DUMMY;
๐งฎ SQL Variables
Variables begin with : and can be form variables, parameters, or system variables.
:RETVALโ return value of last query:SCRLINEโ current form line:PAR1โ:PAR3โ message parameters:FORM_INTERFACEโ 1 when form load is running:FORM_INTERFACE_NAMEโ the name of the interface (when form load is running):ACTIVATEREFRESHrefresh the form after direct activation run:KEYSTROKESโ simulate keyboard actions:SQL.NETโ 0 = Windows, 1 = Web:PRINTFORMATcurrent selected print format:SENDOPTIONcurrent selected print option:ISSENDPDFcurrent selected print as pdf:WANTSEDOCUMENTcurrent selected send print by Email:EXTERNAL.VARNAMEget the variable from External winrun
SELECT DOC
FROM DOCUMENTS
WHERE CURDATE >= (SQL.DATE - 24:00 * 3);
:TotalLines = (:RETVAL <= 0 ? 0 : :RETVAL);
๐ค String & ODBC Functions
STRCAT(a,b)โ concatenateSUBSTR(str,start,len)โ substringLENGTH(str)โ lengthUPPER()/LOWER()
:first = 'First Text Here ' ;
:last = ' Last Text Here' ;
:full = STRCAT(TOLOWER(:first), ' ---> ',TOUPPER(:last));
output text:
first text here ---> LAST TEXT HERE
๐ File & Execution Functions
COPYFILE(from,to)โ copy fileMOVEFILE(from,to)โ move fileDELWINDOW 'f', (path)โ delete fileEXECUTE(cmd)โ run OS commandLINK table TO fileUNLINK table
EXECUTE COPYFILE :TmpFile , '../../system/load/MyTmpFile.txt';
๐งฒ Form Triggers
Triggers run automatically when users interact with forms.
- PRE-FORM
- POST-FORM
- PRE-INSERT
- POST-INSERT
- PRE-UPDATE
- POST-UPDATE
- PRE-DELETE
- POST-DELETE
- PRE-INS-UPD-DEL
- POST-INS-UPD-DEL
๐งช Procedures & Step Logic
- SQLI โ SQL query
- FORM โ open form
- REPORT โ run report
- MESSAGE โ show message
- INPUT โ ask user
- GOTO โ jump
SELECT PARTNAME, PRICE
FROM PART
WHERE PRICE > :minprice
FORMAT;
/*- no price higher then :minprice found -*/
GOTO 555 WHERE :RETVAL <= 0 ;
๐งฉ Priority Snippets
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;
โ ๏ธ Adding Table & Column Rules
- Table names: max 20 chars
- Custom tables: 4โletter prefix
- Custom columns: same prefix
- Column types: CHAR, INT, REAL, DATE, TIME, DAY
- Use autounique keys for joins
๐ Best Practices
- Use autounique keys for relationships
- Never update tables directly โ use Form Interface or Linked Table (LINK)
- Use
SQL.LINEfor numbering - Use
SQL.TMPFILEfor exports - Prefix all custom entities consistently