Class: | _DBC |
Type | Character |
Direction | Input |
Type | Character |
Direction | Input |
Value | Description |
_DBC_DataBase | Database |
_DBC_Table | Table |
_DBC_Field | Field |
_DBC_Index | Index |
_DBC_Relation | Relation |
_DBC_Connection | Connection |
_DBC_View | View |
Type | Integer |
Direction | Input |
Type | Array |
By reference | |
Direction | Output |
#INCLUDE "dbc.h" SET PROCEDURE TO dbc.prg ADDITIVE LOCAL lcAlias,liIDT,liCount,lii,loDBC LOCAL ARRAY laObjects(1) loDBC=CREATEOBJECT("_DBC") lcAlias=SYS(2015) =loDBC.OpenTable(HOME(2)+"\Tastrade\Data\tastrade.dbc",lcAlias,"") * Get all fields for table products liIDT=loDBC.GetIDObject(lcAlias,_DBC_Table,"products") liCount=loDBC.EnumObjects(lcAlias,_DBC_Field,liIDT,@laObjects) FOR lii=1 TO liCount ?laObjects(lii,1),laObjects(lii,2) NEXT * Get all tables from DBC liCount=loDBC.EnumObjects(lcAlias,_DBC_Table,0,@laObjects) FOR lii=1 TO liCount ?laObjects(lii,1),laObjects(lii,2) NEXT loDBC.CloseTable(lcAlias) RELEASE loDBC RELEASE PROCEDURE dbc.prg
LPARAMETERS lcAlias,lcType,liIDParent,laObjects * lcAlias - Alias of opened DBC * lcType - Object Type * liIDParent - Parent ID * @laObjects - Output array for object 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