FUNCTION FieldsToString LPARAMETERS tlAddTypes, tlAddAlias, tlLower, tlAddIndexes LOCAL lcStr, lni, lnFields, laFields[1], lcType, lcField lnFields = AFIELDS(laFields) lcStr = "" FOR lni = 1 TO m.lnFields lcType = laFields[m.lnI,2] IF m.tlLower lcField = LOWER(laFields[m.lnI,1]) ELSE lcField = LOWER(LEFT(laFields[m.lnI, 1],1)) + ; PROPER(SUBSTR(laFields[m.lnI, 1],2)) ENDIF lcStr = m.lcStr + IIF(m.tlAddAlias,PROPER(ALIAS()) + ".", "") + ; m.lcField + ; IIF(m.tlAddTypes, " " + m.lcType + ; IIF(NOT INLIST(m.lcType, "D","T","I","G","M","Y"), "(" + TRANSFORM(laFields[m.lnI,3]) + ; IIF(laFields[m.lnI,4] > 0, ", " + TRANSFORM(laFields[m.lnI,4]),"") + ")","") + ; IIF(laFields[m.lnI,5], " NULL", " NOT NULL"),"") + ", ; " + CRLF NEXT lcStr = LEFT(m.lcStr, RAT(",", m.lcStr) - 1 ) + CRLF IF m.tlAddIndexes LOCAL lnTags, laTags[1] lnTags = ATAGINFO(laTags) FOR lnI = 1 TO m.lnTags lcStr = m.lcStr + CRLF + 'INDEX ON ' + ; laTags[m.lnI,3] + ' TAG ' + laTags[m.lnI,1] + ; IIF(not EMPTY(laTags[m.lnI,4]), ' FOR ' + laTags[m.lnI,4],'') + ; IIF(INLIST(laTags[m.lnI,2],'CANDIDATE','UNIQUE'), ' ' + laTags[m.lnI,2], '') && doubt anyone will create desc index NEXT ENDIF _CLIPTEXT = m.lcStr