Class: | _DBC |
Type | Character |
Direction | Input |
Type | Integer |
Direction | Input |
Type | Integer |
Direction | Input |
By reference | |
Direction | Input |
#INCLUDE "dbc.h" SET PROCEDURE TO dbc.prg ADDITIVE LOCAL lcAlias,liIDT,loDBC,luValue loDBC=CREATEOBJECT("_DBC") lcAlias=SYS(2015) =loDBC.OpenTable(HOME(2)+"\Tastrade\Data\tastrade.dbc",lcAlias,"") * Get field ID liIDT=loDBC.GetIDObject(lcAlias,_DBC_Field,"products.product_id") * Get property value =loDBC.GetProperty(lcAlias,liIDT,_DBCID_Comment,@luValue) ?luValue * Set property value luValue="New comment "+SYS(2015) =loDBC.SetProperty(lcAlias,liIDT,_DBCID_Comment,@luValue) * Get property value =loDBC.GetProperty(lcAlias,liIDT,_DBCID_Comment,@luValue) ?luValue loDBC.CloseTable(lcAlias) RELEASE loDBC RELEASE PROCEDURE dbc.prg
LPARAMETERS lcAlias,liIDObject,liIDProp,luValue * lcAlias - Alias of opened DBC * liIDObject - Object ID * liIDProp - Property ID * luValue - Value LOCAL liStart,liLen,liLenID,lcPom,liType liStart=1 && First char SELE (lcAlias) && Skip to DBC LOCATE FOR ObjectID=liIDObject && Find object IF !FOUND() && If not found RETURN _DBC_ObjectNotFound && Get out ENDIF * Convert value to DBC value luValue=This.ValueToDBCValue(liIDProp,luValue) IF ISNULL(luValue) RETURN _DBC_ValueInvalid ENDIF DO WHILE liStart<=LEN(Property) liLen=This.C4ToI(SUBS(Property,liStart,4)) && Lenght * This is lenght of Property ID liLenID=This.C2ToI(SUBS(Property,liStart+4,2)) * Is't finding property IF This.CnToI(SUBS(Property,liStart+4+2,liLenID))=liIDProp REPL Property WITH STUFF(Property,liStart,liLen,; This.IToC4(4+2+liLenID+LEN(luValue))+; This.IToC2(liLenID)+; This.IToCn(liIDProp)+luValue) RETURN _DBC_ObjectFound ENDIF liStart=liStart+liLen ENDDO lcPom=This.IToCn(liIDProp) REPL Property WITH Property+; This.IToC4(4+2+LEN(lcPom)+LEN(luValue))+; This.IToC2(LEN(lcPom))+; lcPom+luValue RETURN _DBC_ObjectFound