Files
harbour-core/harbour/contrib/hbbmcdx
Miguel Angel Marchuet Frutos dd5f48d252 2008-09-19 12:21 UTC+0100 Miguel Angel Marchuet <miguelangel@marchuet.net>
* contrib/hbbmcdx/bmdbfcdx.c
  * source/rdd/dbfcdx/dbfcdx1.c
    ! fixed return value after rt error.
    * Added rt error as in clipper when OrdkeyVal is greater than 240, with default
      capabilities as in clipper.
    code to test it:
	FUNCTION MAIN()

	    LOCAL i
	    LOCAL nSec := SECONDS()

	    REQUEST DBFCDX
	    RddSetDefault( "DBFCDX" )

	    DBCREATE( "__MYTEST", { { "test", "C", 241, 0 } } )

	    USE __MYTEST
	    INDEX ON FIELD->Test TO __MYTEST

	    FOR i := 1 TO 10
	        APPEND BLANK
        	FIELD->test := Replicate( "1", 240 ) + Str( 10 - i, 1 )
	    NEXT

	    DbGoTop()
	    ? &(OrdKey())
	    ? "Length of &(OrdKey()) :" + Str( Len( &(OrdKey()) ) )
	    ? OrdKeyVal()
	    ? "Length of OrdKeyVal() :" + Str( Len(OrdKeyVal()) )
	    WHILE ! EOF()
	      ? Right( FIELD->Test, 1 )
	      DbSkip()
	    ENDDO

	    USE
	    FERASE( "__MYTEST.DBF" )
	    FERASE( "__MYTEST.CDX" )

	RETURN NIL
2008-09-19 10:24:54 +00:00
..

 BMDBFCDX RDD:
 ----------------------------------------------------------------------------

 Is a DBFCDX RDD compatible with clipper 5.3, use SET OPTIMIZE ON to make a
 static bitmap filters, with SET OPTIMIZE OFF works as harbour DBFCDX.

 Addons:

     BM_DbSeekWild( uKey, [lSoftSeek], [lFindLast], [lNext], [lAll] ) => .T./.F. or aSeekRec when lAll clause
     BM_Turbo( lOnOff ) // Is only recomendable to use it on creating FILTERS
     BM_DbGetFilterArray() => aFilterRec
     BM_DbSetFilterArray( aFilterRec )
     BM_DbSetFilterArrayAdd( aFilterRec )
     BM_DbSetFilterArrayDel( aFilterRec )

 Respecting command:

 SET OPTIMIZE
 Change the setting that determines whether to optimize using the open orders
 when processing a filtered database file
------------------------------------------------------------------------------
 Syntax

     SET OPTIMIZE ON | OFF | (<lToggle>)

 Arguments

     ON enables optimization.

     OFF disables optimization.

     <lToggle> is a logical expression that must be enclosed in
     parentheses.  A value of true (.T.) is the same as ON, and a value of
     false (.F.) is the same as OFF.

     Note:  The initial default of this setting depends on the RDD.

 Description

     For RDDs that support optimization, such as DBFCDX, SET OPTIMIZE
     determines whether to optimize filters based on the orders open in the
     current work area.  If this flag is ON, the RDD will optimize the search
     for records that meet the filter condition to the fullest extent
     possible, minimizing the need to read the actual data from the database
     file.

     If this flag is OFF, the RDD will not optimize.

 Examples

     ¦  The following example enables optimization for the Inventor
        database file using the SET OPTIMIZE command:

        USE Inventor NEW VIA "DBFCDX"
        SET OPTIMIZE ON