DBC_EnumObjects Procedure
This function return list of object in DBC. It's can return list of tables, views, connections, or fields, indexes, and relations for table and view.
=
DBC_EnumObjects
Parameter
lcAlias
DBC Alias
Type Character
Direction Input
Alias of opened DBC as table.
lcType
Object Type
Type Character
Direction Input
List of types
ValueDescription
_DBC_DataBaseDatabase
_DBC_TableTable
_DBC_FieldField
_DBC_IndexIndex
_DBC_RelationRelation
_DBC_ConnectionConnection
_DBC_ViewView
liIDParent
ID of parent object
Type Integer
Direction Input
See DBC_GetIDObject(). This parameter is needy for parameter lcType is one of (_DBC_Field,_DBC_Index,_DBC_Relation)
laObjects
List of selected objects
Type Array
By reference  
Direction Output
Output array is two dimensional. For each object is one row in array. First column is object id and second column is object name.
Return value Integer
If the function succeeds, the return value is count of selected objects.

If the function fails, the return value is _DBC_ErrParamFailed.
Example
#INCLUDE "dbc.h"
SET PROCEDURE TO dfo.prg ADDITIVE
LOCAL lcAlias,liIDT,liCount,lii,lcDBC
LOCAL ARRAY laObjects(1)
lcAlias=SYS(2015)
lcDBC=HOME(2)+"\Tastrade\Data\tastrade.dbc"
USE (lcDBC) ALIAS (lcAlias) IN 0

* Get all fields for table products
liIDT=DBC_GetIDObject(lcAlias,_DBC_Table,"products")
liCount=DBC_EnumObjects(lcAlias,_DBC_Field,liIDT,@laObjects)
FOR lii=1 TO liCount
    ?laObjects(lii,1),laObjects(lii,2)
NEXT

* Get all tables from DBC
liCount=DBC_EnumObjects(lcAlias,_DBC_Table,0,@laObjects)
FOR lii=1 TO liCount
    ?laObjects(lii,1),laObjects(lii,2)
NEXT

USE IN (lcAlias)
RELEASE PROCEDURE dfo.prg


See also
Expand/Collapse source code of procedure DBC_EnumObjects Source Code
LPARAMETERS lcAlias,lcType,liIDParent,laObjects
* lcAlias    - Alias of opended DBC
* lcType     - Object Type
* liIDParent - Parent ID
* @laObjects - Output array for Properties and their values

EXTERNAL ARRAY laObjects


IF EMPTY(lcType)
   RETURN _DBC_ErrParamFailed
ENDIF
LOCAL llFound,liCount,lii,liID
liCount=0
SELE (lcAlias) && Skip to DBC 
IF INLIST(lcType,_DBC_Field,_DBC_Index,_DBC_Relation)
   SET FILTER TO ParentID=liIDParent AND ObjectType==lcType AND ! DELE()
ELSE
   SET FILTER TO ObjectType==lcType AND ! DELE()
ENDIF
GO TOP
COUNT TO liCount
IF liCount>0
   DIME laObjects(liCount,2)
   GO TOP
   lii=0
   SCAN ALL
        lii=lii+1
        laObjects(lii,1)=OBJECTID
        laObjects(lii,2)=ALLT(OBJECTNAME)
   ENDSCAN
ENDIF
SET FILTER TO
RETURN liCount