Valutazione attuale: 0 / 5

Stella inattivaStella inattivaStella inattivaStella inattivaStella inattiva


Filter a database structure array
__FLedit( <aStruct>, [<aFieldList>] ) --> aStructFiltered
<aStruct> is a multidimensional array with database fields structure, which is usually the output from dbStruct(), where each array element has the following structure:
Position Description
1 cFieldName DBS_NAME
2 cFieldType DBS_TYPE
3 nFieldLength DBS_LEN
4 nDecimals DBS_DEC
<aFieldList> is an array where each element is a field name. Names could be specified as uppercase or lowercase.
__FLedit() return a new multidimensional array where each element is in the same structure as the original <aStruct>, but the array is built according to the list of fields in <aFieldList>. If <aFieldList> is empty, __FLedit() return reference to the original <aStruct> array.
__FLedit() can be use to create a sub-set of a database structure, based on a given field list.
Note that field names in <aStruct> MUST be specified in uppercase or else no match would found.
SET EXACT has no effect on the return value.
__FLedit() is a compatibility function and it is synonym for __dbStructFilter() which does exactly the same.
LOCAL aStruct, aList, aRet
aStruct := { ;
   { "CODE",  "N",  4, 0 }, ;
   { "NAME",  "C", 10, 0 }, ;
   { "PHONE", "C", 13, 0 }, ;
   { "IQ",    "N",  3, 0 } }
aList := { "IQ", "NAME" }
aRet := __FLedit( aStruct, aList )
                  // { { "IQ", "N", 3, 0 }, { "NAME", "C", 10, 0 } }
aRet := __FLedit( aStruct, {} )
? aRet == aStruct // .T.
aList := { "iq", "NOTEXIST" }
aRet := __FLedit( aStruct, aList )
                  // { { "IQ", "N", 3, 0 } }
aList := { "NOTEXIST" }
aRet := __FLedit( aStruct, aList )   // {}
// Create a new file that contain part of the original structure
LOCAL aStruct, aList, aRet
aStruct := dbStruct()
aList := { "NAME" }
dbCreate( "onlyname.dbf", __FLedit( aStruct, aList ) )
CA-Cl*pper has internal undocumented function named __FLedit(), in Harbour we name it __dbStructFilter(). The new name gives a better description of what this function does. In Harbour __FLedit() simply calls __dbStructFilter() and therefor the latter is the recommended function to use.
This function is only visible if src/rdd/dbstrux.prg was compiled with the HB_CLP_UNDOC flag.
This is available on all platforms
Header file is Library is rdd
See also

dbCreate(), dbStruct(), __dbCopyStruct(), __dbStructFilter()