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    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.


__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
      USE TEST
      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.




Header file is dbstruct.ch
Library is rdd


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

3 responses to “__FLedit()

  1. Pingback: Harbour Internal Functions | Viva Clipper !

  2. Pingback: Harbour Database Functions | Viva Clipper !

  3. Pingback: Harbour RG Summary | Viva Clipper !

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.