Function GetRef Private all Restore from sysstat.mem addi p_refType = upper(p_refType) lnSize = 6 lcTable = '' Do case Case p_refType = 'REF' lcField = 'nr_refer' lcTable = 'Referral' Case p_refType = 'CLI' lcField = 'nr_client' lcTable = 'Client' Case p_refType = 'PRO' lcField = 'nr_prop' lcTable = 'Property' Case p_refType = 'PAC' lcField = 'nr_pack' lnSize = 8 Case p_refType = 'RES' lcField = 'nr_resour' Case p_refType = 'CAR' lcField = 'nr_care' lnSize = 4 Case p_refType = 'LOG' lcField = 'nr_loggen' lnSize = 8 Case p_refType = 'MES' lcField = 'nr_mess' lnSize = 8 Case p_refType = 'DIA' lcField = 'nr_diary' lnSize = 8 Case p_refType = 'PUR' lcField = 'nr_purch' Case p_refType = 'POL' lcField = 'nr_poline' Case p_refType = 'SUS' lcField = 'nr_susp' Case p_refType = 'ORD' lcField = 'nr_order' lnSize = 7 lcPrefix = s_ordprefix Otherwise Do message with 'Invalid number type passed - phone for help' Return .F. Endcase _alias = alias() Select 0 Use nextref If eof() Append blank For ix = 1 to fcount() If type(field(ix))='N' Replace (field(ix)) with iif(field(ix) == upper(lcField),2,1) Endif Endfor _ref = lcPrefix + str(1, lnSize) Else Do while !rlock() Start=seconds() Do while seconds()-start < 0.1 && Give a short delay before trying to lock again && Assuming set process is at its default Enddo Enddo *Checks that the PK doesn't exist lcPrefix = iif(p_refType = 'ORD', s_ordprefix, s_siteID+s_kitID) lcPKField = 'PKId' lnVal = &lcField If !empty(lcTable) Do WHILE !CheckPk(lcTable, lcPrefix + str(lnVal, lnSize), lcPKField) lnVal = lnVal+1 Enddo Endif _ref = lcPrefix + str(lnVal, lnSize) Replace (lcField) with lnVal+1 Endif Use If !empty(_alias) Select (_alias) Endif Return _ref Function CheckPk Parameters tcTable,tcRef,tcPKField Private all External array arrCnt Select cnt(*) from (tcTable) where &tcPKField = tcRef into array arrCnt Return arrCnt[1]=0Cetin