LPARAMETERS liIDProp,liType,luValue
* liIDProp - Property ID
* liType - Value type
* luValue - Value
* 1) check type
* 2) interval
* 3) if type is not base, call connector if defined
* 4) return .T. is value valid or .F. is invalid
IF (liType=_DBC_ValueType_String AND (!INLIST(TYPE("luValue"),"C","M") OR ISNULL(luValue))) OR ;
(liType=_DBC_ValueType_Byte AND (!TYPE("luValue")="N" OR ISNULL(luValue))) OR ;
(liType=_DBC_ValueType_SI32R AND (!TYPE("luValue")="N" OR ISNULL(luValue))) OR ;
(liType=_DBC_ValueType_I32R AND (!TYPE("luValue")="N" OR ISNULL(luValue))) OR ;
(liType=_DBC_ValueType_Boolean AND (!TYPE("luValue")="L" OR ISNULL(luValue)))
RETURN .F.
ENDIF
DO CASE
CASE INLIST(liIDProp,_DBCID_Comment,_DBCID_Path,;
_DBCID_RuleExpression,_DBCID_RuleText,_DBCID_InsertTrigger,;
_DBCID_UpdateTrigger,_DBCID_DeleteTrigger,_DBCID_PrimaryKey,;
_DBCID_DefaultValue,_DBCID_Caption,_DBCID_ChildTag,;
_DBCID_ParentTable,_DBCID_Database) OR ;
INLIST(liIDProp,_DBCID_ParentTag,_DBCID_DataSource,;
_DBCID_ConnectString,_DBCID_Password,_DBCID_UserID,;
_DBCID_ParameterList,_DBCID_ConnectName,_DBCID_SQL,;
_DBCID_Tables,_DBCID_UpdateName,_DBCID_DataType,;
_DBCID_DisplayClass,_DBCID_DisplayClassLibrary,;
_DBCID_Format,_DBCID_InputMask,;
_DBCID_DBCEventFileName)
RETURN .T.
CASE liIDProp=_DBCID_SubType
RETURN INLIST(luValue,1,6,7)
CASE liIDProp=_DBCID_DispLogin
RETURN INLIST(luValue,1,2,3)
CASE liIDProp=_DBCID_Transactions
RETURN INLIST(luValue,1,2)
CASE liIDProp=_DBCID_SourceType
RETURN INLIST(luValue,1,2)
CASE liIDProp=_DBCID_UpdateType
RETURN INLIST(luValue,1,2)
CASE liIDProp=_DBCID_WhereType
RETURN INLIST(luValue,1,2,3,4)
CASE liIDProp=_DBCID_FetchSize
RETURN luValue=-1 OR BETWEEN(luValue,0,0x7FFFFFFF)
CASE liIDProp=_DBCID_MaxRecords
RETURN luValue=-1 OR BETWEEN(luValue,0,0x7FFFFFFF)
CASE liIDProp=_DBCID_ConnectTimeout
RETURN BETWEEN(luValue,0,0x7FFFFFFF)
CASE liIDProp=_DBCID_IdleTimeout
RETURN BETWEEN(luValue,0,0xA8C0)
CASE liIDProp=_DBCID_QueryTimeout
RETURN BETWEEN(luValue,0,0x7FFFFFFF)
CASE liIDProp=_DBCID_WaitTime
RETURN BETWEEN(luValue,0,0x7FFFFFFF)
CASE liIDProp=_DBCID_PacketSize
RETURN BETWEEN(luValue,0,0x7FFFFFFF)
CASE liIDProp=_DBCID_UseMemoSize
RETURN BETWEEN(luValue,1,255)
CASE liIDProp=_DBCID_Version
RETURN INLIST(luValue,10,11)
CASE liIDProp=_DBCID_BatchUpdateCount
RETURN BETWEEN(luValue,0,0x7FFFFFFF)
CASE INLIST(liIDProp,_DBCID_Prim_Cand,_DBCID_Asynchronous,_DBCID_BatchMode,;
_DBCID_DispWarnings,_DBCID_FetchMemo,_DBCID_ShareConnection,;
_DBCID_SendUpdates,_DBCID_KeyField,_DBCID_Updatable,;
_DBCID_CompareMemo,_DBCID_FetchAsNeeded,_DBCID_Offline,;
_DBCID_Prepared,_DBCID_DBCEvents,_DBCID_AllowSimultaneousFetch,;
_DBCID_DisconnectRollback)
RETURN .T.
OTHERWISE !ISNULL(This.oConnector)
RETURN This.oConnector.CheckValue(liIDProp,liType,luValue)
ENDCASE
RETURN .F.