Template
Function
Name
__dbStructFilter()
Category
API
Subcategory
Database
Oneliner
Filter a database structure array
Syntax
__dbStructFilter( <aStruct>, [<aFieldList>] ) --> aStructFiltered
Arguments
<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 dbstruct.ch -------- ----------- ----------- 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.
Returns
__dbStructFilter() 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, __dbStructFilter() return reference to the original <aStruct> array.
Description
__dbStructFilter() 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 be found.
SET EXACT has no effect on the return value.
Examples
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 := __dbStructFilter( aStruct, aList ) // { { "IQ", "N", 3, 0 }, { "NAME", "C", 10, 0 } } aRet := __dbStructFilter( aStruct, {} ) ? aRet == aStruct // .T. aList := { "iq", "NOTEXIST" } aRet := __dbStructFilter( aStruct, aList ) // { { "IQ", "N", 3, 0 } } aList := { "NOTEXIST" } aRet := __dbStructFilter( aStruct, aList ) // {} // Create a new file that contain part of the original structure LOCAL aStruct, aList, aRet USE TEST aStruct := dbStruct() aList := { "NAME" } dbCreate( "onlyname.dbf", __dbStructFilter( aStruct, aList ) )
Compliance
__dbStructFilter() is a Harbour extension. CA-Cl*pper has an internal undocumented function named __FLedit() that does exactly the same thing. The new name gives a better description of what this function does.
Platforms
All
Files
Header file is dbstruct.ch
Library is rdd
Seealso
dbCreate(), dbStruct(), __dbCopyStruct(), __FLedit()*