ChangeLogTag:19991205-14:22 GMT+1 Bruno Cantero <bruno@issnet.net>
This commit is contained in:
@@ -1,3 +1,14 @@
|
||||
19991205-14:22 GMT+1 Bruno Cantero <bruno@issnet.net>
|
||||
* include/rddapi.h
|
||||
source/rdd/dbcmd.c
|
||||
source/rdd/dbf1.c
|
||||
source/rdd/dbfcdx/dbfcdx1.c
|
||||
+ Added dbSeek(), IndexOrd(), ordSetFocus(), ordFor(), ordKey(),
|
||||
ordNumber(), ordName() and ordBagName() functions.
|
||||
* source/rtl/dummy.prg
|
||||
- Removed dbSeek(), IndexOrd(), ordSetFocus(), ordFor(), ordKey(),
|
||||
ordNumber(), ordName() and ordBagName() functions.
|
||||
|
||||
19991204-17:22 GMT+1 Bruno Cantero <bruno@issnet.net>
|
||||
* include/rddapi.h
|
||||
source/rdd/dbcmd.c
|
||||
|
||||
@@ -600,6 +600,7 @@ typedef USHORT ( * DBENTRYP_VSP )( AREAP area, USHORT action, ULONG lRecord );
|
||||
typedef USHORT ( * DBENTRYP_SVL )( AREAP area, USHORT index, ULONG * param );
|
||||
typedef USHORT ( * DBENTRYP_SSI )( AREAP area, USHORT p1, USHORT p2, PHB_ITEM p3 );
|
||||
typedef USHORT ( * DBENTRYP_ISI )( AREAP area, PHB_ITEM p1, USHORT p2, PHB_ITEM p3 );
|
||||
typedef USHORT ( * DBENTRYP_BIB )( AREAP area, BOOL p1, PHB_ITEM p2, BOOL p3 );
|
||||
|
||||
#if 0
|
||||
typedef USHORT ( * DBENTRYP_VPL )( AREAP area, void * p1, LONG p2);
|
||||
@@ -622,9 +623,7 @@ typedef struct _RDDFUNCS
|
||||
DBENTRYP_UL go;
|
||||
DBENTRYP_I goToId;
|
||||
DBENTRYP_V goTop;
|
||||
#if 0
|
||||
DBENTRYP_SI seek;
|
||||
#endif
|
||||
DBENTRYP_BIB seek;
|
||||
DBENTRYP_L skip;
|
||||
DBENTRYP_L skipFilter;
|
||||
DBENTRYP_L skipRaw;
|
||||
@@ -700,8 +699,8 @@ typedef struct _RDDFUNCS
|
||||
DBENTRYP_V orderListClear;
|
||||
#if 0
|
||||
DBENTRYP_VP orderListDelete;
|
||||
DBENTRYP_VP orderListFocus;
|
||||
#endif
|
||||
DBENTRYP_OI orderListFocus;
|
||||
DBENTRYP_V orderListRebuild;
|
||||
DBENTRYP_VOI orderCondition;
|
||||
DBENTRYP_VOC orderCreate;
|
||||
@@ -781,7 +780,7 @@ typedef RDDFUNCS * PRDDFUNCS;
|
||||
#define SELF_GOTOID(w, sp) ((*(w)->lprfsHost->goToId)(w, sp))
|
||||
#define SELF_GOBOTTOM(w) ((*(w)->lprfsHost->goBottom)(w))
|
||||
#define SELF_GOTOP(w) ((*(w)->lprfsHost->goTop)(w))
|
||||
#define SELF_SEEK(w, i, v) ((*(w)->lprfsHost->seek)(w, i, v))
|
||||
#define SELF_SEEK(w, i1, v, i2) ((*(w)->lprfsHost->seek)(w, i1, v, i2))
|
||||
#define SELF_SKIP(w, l) ((*(w)->lprfsHost->skip)(w, l))
|
||||
#define SELF_SKIPFILTER(w, l) ((*(w)->lprfsHost->skipFilter)(w, l))
|
||||
#define SELF_SKIPRAW(w, l) ((*(w)->lprfsHost->skipRaw)(w, l))
|
||||
@@ -935,7 +934,7 @@ typedef RDDFUNCS * PRDDFUNCS;
|
||||
#define SUPER_GOTOID(w, sp) ((*(SUPERTABLE)->goToId)(w, sp))
|
||||
#define SUPER_GOBOTTOM(w) ((*(SUPERTABLE)->goBottom)(w))
|
||||
#define SUPER_GOTOP(w) ((*(SUPERTABLE)->goTop)(w))
|
||||
#define SUPER_SEEK(w, i, v) ((*(SUPERTABLE)->seek)(w, i, v))
|
||||
#define SUPER_SEEK(w, i1, v, i2) ((*(SUPERTABLE)->seek)(w, i1, v, i2))
|
||||
#define SUPER_SKIP(w, l) ((*(SUPERTABLE)->skip)(w, l))
|
||||
#define SUPER_SKIPFILTER(w, l) ((*(SUPERTABLE)->skipFilter)(w, l))
|
||||
#define SUPER_SKIPRAW(w, l) ((*(SUPERTABLE)->skipRaw)(w, l))
|
||||
|
||||
@@ -97,6 +97,7 @@ HARBOUR HB_DBRECALL( void );
|
||||
HARBOUR HB_DBRLOCK( void );
|
||||
HARBOUR HB_DBRLOCKLIST( void );
|
||||
HARBOUR HB_DBRUNLOCK( void );
|
||||
HARBOUR HB_DBSEEK( void );
|
||||
HARBOUR HB_DBSELECTAREA( void );
|
||||
HARBOUR HB_DBSETDRIVER( void );
|
||||
HARBOUR HB_DBSETFILTER( void );
|
||||
@@ -119,17 +120,24 @@ HARBOUR HB_FIELDPUT( void );
|
||||
HARBOUR HB_FLOCK( void );
|
||||
HARBOUR HB_FOUND( void );
|
||||
HARBOUR HB_HEADER( void );
|
||||
HARBOUR HB_INDEXORD( void );
|
||||
HARBOUR HB_LASTREC( void );
|
||||
HARBOUR HB_LOCK( void );
|
||||
HARBOUR HB_LUPDATE( void );
|
||||
HARBOUR HB_NETERR( void );
|
||||
HARBOUR HB_ORDBAGEXT( void );
|
||||
HARBOUR HB_ORDBAGNAME( void );
|
||||
HARBOUR HB_ORDCONDSET( void );
|
||||
HARBOUR HB_ORDCREATE( void );
|
||||
HARBOUR HB_ORDDESTROY( void );
|
||||
HARBOUR HB_ORDFOR( void );
|
||||
HARBOUR HB_ORDKEY( void );
|
||||
HARBOUR HB_ORDLISTADD( void );
|
||||
HARBOUR HB_ORDLISTCLEAR( void );
|
||||
HARBOUR HB_ORDLISTREBUILD( void );
|
||||
HARBOUR HB_ORDNAME( void );
|
||||
HARBOUR HB_ORDNUMBER( void );
|
||||
HARBOUR HB_ORDSETFOCUS( void );
|
||||
HARBOUR HB_RDDLIST( void );
|
||||
HARBOUR HB_RDDNAME( void );
|
||||
HARBOUR HB_RDDREGISTER( void );
|
||||
@@ -812,6 +820,7 @@ static RDDFUNCS defTable = { defBof,
|
||||
( DBENTRYP_UL ) defUnSupported,
|
||||
( DBENTRYP_I ) defUnSupported,
|
||||
defUnSupported,
|
||||
( DBENTRYP_BIB ) defUnSupported,
|
||||
defSkip,
|
||||
defSkipFilter,
|
||||
defSkipRaw,
|
||||
@@ -851,6 +860,7 @@ static RDDFUNCS defTable = { defBof,
|
||||
defUnSupported,
|
||||
( DBENTRYP_OI ) defUnSupported,
|
||||
defUnSupported,
|
||||
( DBENTRYP_OI ) defUnSupported,
|
||||
defUnSupported,
|
||||
defOrderCondition,
|
||||
( DBENTRYP_VOC ) defUnSupported,
|
||||
@@ -2294,6 +2304,32 @@ HARBOUR HB_DBRUNLOCK( void )
|
||||
hb_errRT_DBCMD( EG_NOTABLE, 2001, NULL, "DBRUNLOCK" );
|
||||
}
|
||||
|
||||
HARBOUR HB_DBSEEK( void )
|
||||
{
|
||||
PHB_ITEM pKey;
|
||||
BOOL bSoftSeek, bFindLast;
|
||||
|
||||
if( pCurrArea )
|
||||
{
|
||||
if( !ISNIL( 1 ) )
|
||||
{
|
||||
pKey = hb_param( 1, IT_ANY );
|
||||
bSoftSeek = ISLOG( 2 ) ? hb_parl( 2 ) : hb_set.HB_SET_SOFTSEEK;
|
||||
bFindLast = ISLOG( 3 ) ? hb_parl( 3 ) : FALSE;
|
||||
if( SELF_SEEK( ( AREAP ) pCurrArea->pArea, bSoftSeek, pKey, bFindLast ) == SUCCESS )
|
||||
{
|
||||
hb_retl( ( ( AREAP ) pCurrArea->pArea )->fFound );
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
hb_errRT_DBCMD( EG_ARG, 1001, NULL, "DBSEEK" );
|
||||
}
|
||||
else
|
||||
hb_errRT_DBCMD( EG_NOTABLE, 2001, NULL, "DBSEEK" );
|
||||
hb_retl( FALSE );
|
||||
}
|
||||
|
||||
HARBOUR HB_DBSELECTAREA( void )
|
||||
{
|
||||
USHORT uiNewArea;
|
||||
@@ -2871,6 +2907,21 @@ HARBOUR HB_HEADER( void )
|
||||
}
|
||||
}
|
||||
|
||||
HARBOUR HB_INDEXORD( void )
|
||||
{
|
||||
DBORDERINFO pInfo;
|
||||
|
||||
if( pCurrArea )
|
||||
{
|
||||
pInfo.itmResult = hb_itemPutNI( NULL, 0 );
|
||||
SELF_ORDINFO( ( AREAP ) pCurrArea->pArea, DBOI_NUMBER, &pInfo );
|
||||
hb_retni( hb_itemGetNI( pInfo.itmResult ) );
|
||||
hb_itemRelease( pInfo.itmResult );
|
||||
}
|
||||
else
|
||||
hb_retni( 0 );
|
||||
}
|
||||
|
||||
HARBOUR HB_LASTREC( void )
|
||||
{
|
||||
HB_RECCOUNT();
|
||||
@@ -2960,6 +3011,29 @@ HARBOUR HB_ORDBAGEXT( void )
|
||||
}
|
||||
}
|
||||
|
||||
HARBOUR HB_ORDBAGNAME( void )
|
||||
{
|
||||
DBORDERINFO pOrderInfo;
|
||||
|
||||
if( pCurrArea )
|
||||
{
|
||||
pOrderInfo.itmOrder = hb_param( 1, IT_STRING );
|
||||
if( !pOrderInfo.itmOrder )
|
||||
pOrderInfo.itmOrder = hb_param( 1, IT_NUMERIC );
|
||||
if( !pOrderInfo.itmOrder )
|
||||
{
|
||||
hb_errRT_DBCMD( EG_ARG, 1006, NULL, "ORDBAGNAME" );
|
||||
return;
|
||||
}
|
||||
pOrderInfo.itmResult = hb_itemPutC( NULL, "" );
|
||||
SELF_ORDINFO( ( AREAP ) pCurrArea->pArea, DBOI_BAGNAME, &pOrderInfo );
|
||||
hb_retc( hb_itemGetC( pOrderInfo.itmResult ) );
|
||||
hb_itemRelease( pOrderInfo.itmResult );
|
||||
}
|
||||
else
|
||||
hb_errRT_DBCMD( EG_NOTABLE, 2001, NULL, "ORDBAGNAME" );
|
||||
}
|
||||
|
||||
HARBOUR HB_ORDCONDSET( void )
|
||||
{
|
||||
LPDBORDERCONDINFO pOrderCondInfo;
|
||||
@@ -3069,6 +3143,54 @@ HARBOUR HB_ORDDESTROY( void )
|
||||
}
|
||||
}
|
||||
|
||||
HARBOUR HB_ORDFOR( void )
|
||||
{
|
||||
DBORDERINFO pOrderInfo;
|
||||
|
||||
if( pCurrArea )
|
||||
{
|
||||
pOrderInfo.itmOrder = hb_param( 1, IT_STRING );
|
||||
if( !pOrderInfo.itmOrder )
|
||||
pOrderInfo.itmOrder = hb_param( 1, IT_NUMERIC );
|
||||
pOrderInfo.atomBagName = hb_param( 2, IT_STRING );
|
||||
if( !pOrderInfo.itmOrder )
|
||||
{
|
||||
hb_errRT_DBCMD( EG_ARG, 1006, NULL, "ORDFOR" );
|
||||
return;
|
||||
}
|
||||
pOrderInfo.itmResult = hb_itemPutC( NULL, "" );
|
||||
SELF_ORDINFO( ( AREAP ) pCurrArea->pArea, DBOI_CONDITION, &pOrderInfo );
|
||||
hb_retc( hb_itemGetC( pOrderInfo.itmResult ) );
|
||||
hb_itemRelease( pOrderInfo.itmResult );
|
||||
}
|
||||
else
|
||||
hb_errRT_DBCMD( EG_NOTABLE, 2001, NULL, "ORDFOR" );
|
||||
}
|
||||
|
||||
HARBOUR HB_ORDKEY( void )
|
||||
{
|
||||
DBORDERINFO pOrderInfo;
|
||||
|
||||
if( pCurrArea )
|
||||
{
|
||||
pOrderInfo.itmOrder = hb_param( 1, IT_STRING );
|
||||
if( !pOrderInfo.itmOrder )
|
||||
pOrderInfo.itmOrder = hb_param( 1, IT_NUMERIC );
|
||||
pOrderInfo.atomBagName = hb_param( 2, IT_STRING );
|
||||
if( !pOrderInfo.itmOrder )
|
||||
{
|
||||
hb_errRT_DBCMD( EG_ARG, 1006, NULL, "ORDKEY" );
|
||||
return;
|
||||
}
|
||||
pOrderInfo.itmResult = hb_itemPutC( NULL, "" );
|
||||
SELF_ORDINFO( ( AREAP ) pCurrArea->pArea, DBOI_EXPRESSION, &pOrderInfo );
|
||||
hb_retc( hb_itemGetC( pOrderInfo.itmResult ) );
|
||||
hb_itemRelease( pOrderInfo.itmResult );
|
||||
}
|
||||
else
|
||||
hb_errRT_DBCMD( EG_NOTABLE, 2001, NULL, "ORDKEY" );
|
||||
}
|
||||
|
||||
HARBOUR HB_ORDLISTADD( void )
|
||||
{
|
||||
DBORDERINFO pOrderInfo;
|
||||
@@ -3078,9 +3200,7 @@ HARBOUR HB_ORDLISTADD( void )
|
||||
{
|
||||
pOrderInfo.atomBagName = hb_param( 1, IT_STRING );
|
||||
pOrderInfo.itmOrder = hb_param( 2, IT_STRING );
|
||||
if( !pOrderInfo.itmOrder )
|
||||
pOrderInfo.itmOrder = hb_param( 2, IT_NUMERIC );
|
||||
if( !pOrderInfo.atomBagName && !pOrderInfo.itmOrder )
|
||||
if( !pOrderInfo.atomBagName )
|
||||
{
|
||||
hb_errRT_DBCMD( EG_ARG, 1006, NULL, "ORDLISTADD" );
|
||||
return;
|
||||
@@ -3107,6 +3227,69 @@ HARBOUR HB_ORDLISTREBUILD( void )
|
||||
hb_errRT_DBCMD( EG_NOTABLE, 2001, NULL, "ORDLISTCLEAR" );
|
||||
}
|
||||
|
||||
HARBOUR HB_ORDNAME( void )
|
||||
{
|
||||
DBORDERINFO pOrderInfo;
|
||||
|
||||
if( pCurrArea )
|
||||
{
|
||||
pOrderInfo.itmOrder = hb_param( 1, IT_NUMERIC );
|
||||
pOrderInfo.atomBagName = hb_param( 2, IT_STRING );
|
||||
if( !pOrderInfo.itmOrder )
|
||||
{
|
||||
hb_errRT_DBCMD( EG_ARG, 1006, NULL, "ORDNAME" );
|
||||
return;
|
||||
}
|
||||
pOrderInfo.itmResult = hb_itemPutC( NULL, "" );
|
||||
SELF_ORDINFO( ( AREAP ) pCurrArea->pArea, DBOI_NAME, &pOrderInfo );
|
||||
hb_retc( hb_itemGetC( pOrderInfo.itmResult ) );
|
||||
hb_itemRelease( pOrderInfo.itmResult );
|
||||
}
|
||||
else
|
||||
hb_errRT_DBCMD( EG_NOTABLE, 2001, NULL, "ORDNAME" );
|
||||
}
|
||||
|
||||
HARBOUR HB_ORDNUMBER( void )
|
||||
{
|
||||
DBORDERINFO pOrderInfo;
|
||||
|
||||
if( pCurrArea )
|
||||
{
|
||||
pOrderInfo.itmOrder = hb_param( 1, IT_STRING );
|
||||
pOrderInfo.atomBagName = hb_param( 2, IT_STRING );
|
||||
if( !pOrderInfo.itmOrder )
|
||||
{
|
||||
hb_errRT_DBCMD( EG_ARG, 1006, NULL, "ORDNUMBER" );
|
||||
return;
|
||||
}
|
||||
pOrderInfo.itmResult = hb_itemPutNI( NULL, 0 );
|
||||
SELF_ORDINFO( ( AREAP ) pCurrArea->pArea, DBOI_NUMBER, &pOrderInfo );
|
||||
hb_retni( hb_itemGetNI( pOrderInfo.itmResult ) );
|
||||
hb_itemRelease( pOrderInfo.itmResult );
|
||||
}
|
||||
else
|
||||
hb_errRT_DBCMD( EG_NOTABLE, 2001, NULL, "ORDNUMBER" );
|
||||
}
|
||||
|
||||
HARBOUR HB_ORDSETFOCUS( void )
|
||||
{
|
||||
DBORDERINFO pInfo;
|
||||
|
||||
if( pCurrArea )
|
||||
{
|
||||
pInfo.itmOrder = hb_param( 1, IT_STRING );
|
||||
if( !pInfo.itmOrder )
|
||||
pInfo.itmOrder = hb_param( 1, IT_NUMERIC );
|
||||
pInfo.atomBagName = hb_param( 2, IT_STRING );
|
||||
pInfo.itmResult = hb_itemPutC( NULL, "" );
|
||||
SELF_ORDLSTFOCUS( ( AREAP ) pCurrArea->pArea, &pInfo );
|
||||
hb_retc( hb_itemGetC( pInfo.itmResult ) );
|
||||
hb_itemRelease( pInfo.itmResult );
|
||||
}
|
||||
else
|
||||
hb_errRT_DBCMD( EG_NOTABLE, 2001, NULL, "ORDSETFOCUS" );
|
||||
}
|
||||
|
||||
HARBOUR HB_RDDLIST( void )
|
||||
{
|
||||
USHORT uiType;
|
||||
|
||||
@@ -639,6 +639,7 @@ static RDDFUNCS dbfSuper = { 0 };
|
||||
#define dbfBof NULL
|
||||
#define dbfEof NULL
|
||||
#define dbfFound NULL
|
||||
#define dbfSeek NULL
|
||||
#define dbfSkip NULL
|
||||
#define dbfSkipFilter NULL
|
||||
#define dbfSkipRaw NULL
|
||||
@@ -655,6 +656,7 @@ static RDDFUNCS dbfSuper = { 0 };
|
||||
#define dbfEval NULL
|
||||
#define dbfOrderListAdd NULL
|
||||
#define dbfOrderListClear NULL
|
||||
#define dbfOrderListFocus NULL
|
||||
#define dbfOrderListRebuild NULL
|
||||
#define dbfOrderCondition NULL
|
||||
#define dbfOrderCreate NULL
|
||||
@@ -2012,6 +2014,7 @@ static RDDFUNCS dbfTable = { dbfBof,
|
||||
dbfGoTo,
|
||||
dbfGoToId,
|
||||
dbfGoTop,
|
||||
dbfSeek,
|
||||
dbfSkip,
|
||||
dbfSkipFilter,
|
||||
dbfSkipRaw,
|
||||
@@ -2051,6 +2054,7 @@ static RDDFUNCS dbfTable = { dbfBof,
|
||||
dbfZap,
|
||||
dbfOrderListAdd,
|
||||
dbfOrderListClear,
|
||||
dbfOrderListFocus,
|
||||
dbfOrderListRebuild,
|
||||
dbfOrderCondition,
|
||||
dbfOrderCreate,
|
||||
|
||||
@@ -506,6 +506,13 @@ static ERRCODE cdxOrderListClear( AREAP pArea )
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
static ERRCODE cdxOrderListFocus( AREAP pArea, LPDBORDERINFO pOrderInfo )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("cdxOrderListFocus(%p, %p)", pArea, pOrderInfo));
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
static ERRCODE cdxOrderListRebuild( AREAP pArea )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("cdxOrderListRebuild(%p)", pArea));
|
||||
@@ -542,6 +549,13 @@ static ERRCODE cdxPutValueFile( AREAP pArea, USHORT uiIndex, void * pFile )
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
static ERRCODE cdxSeek( AREAP pArea, BOOL bSoftSeek, PHB_ITEM pKey, BOOL bFindLast )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("cdxSeek(%p, %d, %p, %d)", pArea, bSoftSeek, pKey, bFindLast));
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
static ERRCODE cdxWriteDBHeader( AREAP pArea )
|
||||
{
|
||||
DBFHEADER pHeader;
|
||||
@@ -646,6 +660,7 @@ static RDDFUNCS cdxTable = { cdxBof,
|
||||
cdxGoTo,
|
||||
cdxGoToId,
|
||||
cdxGoTop,
|
||||
cdxSeek,
|
||||
cdxSkip,
|
||||
cdxSkipFilter,
|
||||
cdxSkipRaw,
|
||||
@@ -685,6 +700,7 @@ static RDDFUNCS cdxTable = { cdxBof,
|
||||
cdxZap,
|
||||
cdxOrderListAdd,
|
||||
cdxOrderListClear,
|
||||
cdxOrderListFocus,
|
||||
cdxOrderListRebuild,
|
||||
cdxOrderCondition,
|
||||
cdxOrderCreate,
|
||||
|
||||
@@ -35,27 +35,19 @@
|
||||
|
||||
/* TODO: Dummy functions, should be removed when implemented. */
|
||||
|
||||
FUNCTION ordBagName() ; RETURN ""
|
||||
FUNCTION ordCond() ; RETURN NIL /* 5.3 */
|
||||
FUNCTION ordDescend() ; RETURN .F. /* 5.3 */
|
||||
FUNCTION ordFor() ; RETURN NIL
|
||||
FUNCTION ordIsUnique() ; RETURN .F. /* 5.3 */
|
||||
FUNCTION ordKey() ; RETURN ""
|
||||
FUNCTION ordKeyAdd() ; RETURN .F. /* 5.3 */
|
||||
FUNCTION ordKeyCount() ; RETURN 0 /* 5.3 */
|
||||
FUNCTION ordKeyDel() ; RETURN .F. /* 5.3 */
|
||||
FUNCTION ordKeyGoto() ; RETURN .F. /* 5.3 */
|
||||
FUNCTION ordKeyNo() ; RETURN 0 /* 5.3 */
|
||||
FUNCTION ordKeyVal() ; RETURN NIL /* 5.3 */
|
||||
FUNCTION ordName() ; RETURN ""
|
||||
FUNCTION ordNumber() ; RETURN 0
|
||||
FUNCTION ordScope() ; RETURN NIL /* 5.3 */
|
||||
FUNCTION ordSetFocus() ; RETURN 0
|
||||
FUNCTION ordSetRelation() ; RETURN NIL /* 5.3 */
|
||||
FUNCTION ordSkipUnique() ; RETURN .F. /* 5.3 */
|
||||
FUNCTION IndexOrd() ; RETURN 0
|
||||
|
||||
FUNCTION dbSeek() ; RETURN .F.
|
||||
FUNCTION dbSetRelation() ; RETURN NIL
|
||||
FUNCTION dbClearRelation() ; RETURN NIL
|
||||
FUNCTION dbFileGet() ; RETURN .F. /* 5.3 */
|
||||
|
||||
Reference in New Issue
Block a user