Files
harbour-core/harbour/doc/en/rdddb.txt
Viktor Szakats 4814b3b5df 2012-07-03 22:25 UTC+0200 Viktor Szakats (harbour syenar.net)
* doc/en/memvar2.txt
  * doc/en/menu.txt
  * doc/en/misc.txt
  * doc/en/nation.txt
  * doc/en/objfunc.txt
  * doc/en/rdddb.txt
  * doc/en/rddmisc.txt
  * doc/en/rddord.txt
  * doc/en/sayget.txt
  * doc/en/set.txt
  * doc/en/string.txt
  * doc/en/tbrowse.txt
  * doc/en/tclass.txt
  * doc/en/terminal.txt
  * doc/en/tgetlist.txt
  * doc/en/tlabel.txt
  * doc/en/treport.txt
  * doc/en/var.txt
    ! further fixes in $EXAMPLES$ sections
2012-07-03 20:26:37 +00:00

1275 lines
33 KiB
Plaintext

/*
* $Id$
*/
/*
* The following parts are Copyright of the individual authors.
* www - http://harbour-project.org
*
* Copyright 1999 Luiz Rafael Culik <culik@sl.conex.net>
* DB*() documentation
* ORD*() documentation
* RDD*() documentation
*
* See COPYING for licensing terms.
*
*/
/* $DOC$
* $TEMPLATE$
* Function
* $NAME$
* DBEVAL()
* $CATEGORY$
* API
* $SUBCATEGORY$
* Execute and Execution
* $ONELINER$
* Performs a code block operation on the current Database
* $SYNTAX$
* DBEVAL( <bBlock>,
* [<bFor>], [<bWhile>],
* [<nNext>], [<nRecord>],
* [<lRest>] ) --> NIL
* $ARGUMENTS$
* <bBlock> Operation that is to be performed
*
* <bFor> Code block for the For condition
*
* <bWhile> Code block for the WHILE condition
*
* <nNext> Number of NEXT records to process
*
* <nRecord> Record number to work on exactly
*
* <lRest> Toggle to rewind record pointer
* $RETURNS$
* DBEVAL() always returns NIL
* $DESCRIPTION$
* Performs a code block operation on the current Database
* $EXAMPLES$
* PROCEDURE Main()
* LOCAL nCount
*
* USE test
*
* dbGoto( 4 )
* ? RecNo()
* COUNT TO nCount
* ? RecNo(), nCount
* COUNT TO nCount NEXT 10
* ? RecNo(), nCount
*
* RETURN
* $STATUS$
* S
* $COMPLIANCE$
* C
* $FILES$
* Library is rdd
* $SEEALSO$
* EVAL()
* $END$
*/
/* $DOC$
* $TEMPLATE$
* Function
* $NAME$
* DBF()
* $CATEGORY$
* API
* $SUBCATEGORY$
* Database
* $ONELINER$
* Alias name of a work area
* $SYNTAX$
* Dbf() --> <cWorkArea>
* $RETURNS$
* <cWorkArea> Name of alias
* $DESCRIPTION$
* This function returns the same alias name ofthe currently selected
* work area.
* $EXAMPLES$
* PROCEDURE Main()
*
* USE test
*
* SELECT 0
* QOut( iif( DBF() == "", "No Name", DBF() ) )
* test->( QOut( DBF() ) )
* QOut( Alias( 1 ) )
*
* RETURN
* $STATUS$
* R
* $COMPLIANCE$
* C
* $FILES$
* Library is rdd
* $SEEALSO$
* ALIAS()
* $END$
*/
/* $DOC$
* $TEMPLATE$
* Function
* $NAME$
* DBAPPEND()
* $CATEGORY$
* API
* $SUBCATEGORY$
* Database
* $ONELINER$
* Appends a new record to a database file.
* $SYNTAX$
* DbAppend( [<lLock>] ) --> NIL
* $ARGUMENTS$
* <lLock> Toggle to release record locks
* $RETURNS$
* DbAppend() always returns NIL
* $DESCRIPTION$
* This function add a new record to the end of the database
* in the selected or aliased work area. All fields in that
* database will be given empty data values - character fields
* will be filled with blank spaces,date fields with CTOD('//'),
* numeric fields with 0, logical fields with .F., and memo fields
* with NULL bytes. The header of the database is not updated until
* the record is flushed from the buffer and the contents are
* written to the disk.
*
* Under a networking enviroment, DBAPPEND() performs an additional
* operation: It attrmps to lock the newly added record. If
* the database file is currently locked or if a locking assignment
* if made to LASTREC()+1, NETERR() will return a logical true (.T.)
* immediately after the DBAPPEND() function. This function does
* not unlock the locked records.
*
* If <lLock> is passed a logical true (.T.) value, it will
* release the record locks, which allows the application to main-
* tain multiple record locks during an appending operation. The
* default for this parameter is a logical false (.F.).
* $EXAMPLES$
* PROCEDURE Main()
* LOCAL cName := "HARBOUR", nId := 10
* USE test
* test->( dbAppend() )
* REPLACE test->Name WITH cName, test->Id WITH nId
* USE
* RETURN
* $STATUS$
* R
* $COMPLIANCE$
* C
* $FILES$
* Library is rdd
* $SEEALSO$
* DBUNLOCK(),DBUNLOCKALL()
* $END$
*/
/* $DOC$
* $TEMPLATE$
* Function
* $NAME$
* DBCLEARFILTER()
* $CATEGORY$
* API
* $SUBCATEGORY$
* Database
* $ONELINER$
* Clears the current filter condiction in a work area
* $SYNTAX$
* DbClearFilTer() --> NIL
* $RETURNS$
* DbClearFilTer() always returns NIL
* $DESCRIPTION$
* This function clears any active filter condiction
* for the current or selected work area.
* $EXAMPLES$
* PROCEDURE Main()
* USE test
* SET FILTER TO Left( test->Name, 2 ) == "An"
* dbEdit()
* Test->( dbClearFilter() )
* USE
* RETURN
* $STATUS$
* R
* $COMPLIANCE$
* C
* $FILES$
* Library is rdd
* $SEEALSO$
* DBSETFILTER(),DBFILTER()
* $END$
*/
/* $DOC$
* $TEMPLATE$
* Function
* $NAME$
* DBCLOSEALL()
* $CATEGORY$
* API
* $SUBCATEGORY$
* Database
* $ONELINER$
* Close all open files in all work areas.
* $SYNTAX$
* DbCloseAll() --> NIL
* $RETURNS$
* DBCLOSEALL() always return NIL
* $DESCRIPTION$
* This function close all open databases and all associated
* indexes. In addition, it closes all format files and moves
* the work area pointer to the first position
* $EXAMPLES$
* PROCEDURE Main()
* USE test NEW
* dbEdit()
* USE test1 NEW
* dbEdit()
* dbCloseAll()
* USE
* RETURN
* $STATUS$
* R
* $COMPLIANCE$
* C
* $FILES$
* Library is rdd
* $SEEALSO$
* DBUSEAREA(),DBCLOSEAREA()
* $END$
*/
/* $DOC$
* $TEMPLATE$
* Procedure
* $NAME$
* DBCLOSEAREA()
* $CATEGORY$
* API
* $SUBCATEGORY$
* Database
* $ONELINER$
* Close a database file in a work area.
* $SYNTAX$
* DbCloseArea()
* $DESCRIPTION$
* This function will close any database open in the selected
* or aliased work area.
* $EXAMPLES$
* PROCEDURE Main()
* USE test
* dbEdit()
* Test->( dbCloseArea() )
* USE
* RETURN
* $STATUS$
* R
* $COMPLIANCE$
* C
* $FILES$
* Library is rdd
* $SEEALSO$
* DBUSEAREA(),DBCLOSEALL()
* $END$
*/
/* $DOC$
* $TEMPLATE$
* Procedure
* $NAME$
* DBCOMMIT()
* $CATEGORY$
* API
* $SUBCATEGORY$
* Database
* $ONELINER$
* Updates all index and database buffers for a given workarea
* $SYNTAX$
* DBCOMMIT()
* $DESCRIPTION$
* This function updates all of the information for a give,selected,
* or active workarea. This operation includes all database and index
* buffers for that work area only. This function does not update all
* open work areas.
* $EXAMPLES$
* PROCEDURE Main()
* LOCAL cName := SPACE( 40 )
* LOCAL nId := 0
* USE test EXCLUSIVE NEW
* //
* @ 10, 10 GET cName
* @ 11, 10 GET nId
* READ
* //
* IF UPDATED()
* APPEND BLANK
* REPLACE tests->Name WITH cName
* REPLACE tests->Id WITH nId
* tests->( DBCOMMIT() )
* ENDIF
* RETURN
* $STATUS$
* R
* $COMPLIANCE$
* C
* $FILES$
* Library is rdd
* $SEEALSO$
* DBCLOSEALL(),DBCOMMITALL(),DBUNLOCK()
* $END$
*/
/* $DOC$
* $TEMPLATE$
* Procedure
* $NAME$
* DBCOMMITALL()
* $CATEGORY$
* API
* $SUBCATEGORY$
* Database
* $ONELINER$
* Flushes the memory buffer and performs a hard-disk write
* $SYNTAX$
* DBCOMMIT()
* $DESCRIPTION$
* This function performs a hard-disk write for all work areas.
* Before the disk write is performed,all buffers are flushed.
* open work areas.
* $EXAMPLES$
* PROCEDURE Main()
* LOCAL cName := SPACE( 40 )
* LOCAL nId := 0
* USE test EXCLUSIVE NEW
* USE testid NEW INDEX testid
* //
* @ 10, 10 GET cName
* @ 11, 10 GET nId
* READ
* //
* IF UPDATED()
* APPEND BLANK
* REPLACE tests->Name WITH cName
* REPLACE tests->Id WITH nId
* IF ! testid->( DBSEEK( nId ) )
* APPEND BLANK
* REPLACE tests->Id WITH nId
* ENDIF
* ENDIF
* DBCOMMITALL()
* RETURN
* $STATUS$
* R
* $COMPLIANCE$
* C
* $FILES$
* Library is rdd
* $SEEALSO$
* DBCLOSEALL(),DBCOMMIT(),DBUNLOCK()
* $END$
*/
/* $DOC$
* $TEMPLATE$
* Procedure
* $NAME$
* DBCREATE()
* $CATEGORY$
* API
* $SUBCATEGORY$
* Database
* $ONELINER$
* Creates an empty database from a array.
* $SYNTAX$
* DBCREATE( <cDatabase>, <aStruct>, [<cDriver>], [<lOpen>],
* [<cAlias>] )
* $ARGUMENTS$
* <cDatabase> Name of database to be create
*
* <aStruct> Name of a multidimensional array that contains the
* database structure
*
* <cDriver> Name of the RDD
*
* <lOpenNew> 3-way toggle to Open the file in New or Current workarea:
*
* <table>
* NIL The file is not opened.
* True It is opened in a New area.
* False It is opened in the current area.
* </table>
*
* <cAlias> Name of database Alias
* $DESCRIPTION$
* This function creates the database file specified as <cDatabase> from the
* multidimensional array <aStruct>. If no file extension is use with <cDatabase>
* the .dbf extension is assumed.
* The array specified in <aStruct> must follow a few guidelines when being
* built prior to a call to DBCREATE():
*
* - All subscripts values in the second dimension must be set to proper values
*
* - The fourth subscript value in the second dimension - which contains
* the decimal value-must he specified. even 1kw nonnumeric fields.
*
* - The second subscript value in the second dimension-which contains
* the field data type-must contain a proper value: C, D, L, M or N
* It is possible to use additional letters (or clarity (e.g., 'Numeric'
* for 'N'): however, the first letter of this array element must
* be a proper value.
*
* The DBCREATE( ) function does not use the decimal field to
* calculate the length of a character held longer than 256. Values
* up to the maximum length of a character field (which is 65,519 bytes)
* are stored directly in the database in the length attribute if that
* database was created via this function. However, a file containing
* fields longer than 256 bytes is not compatible with any interpreter.
*
* The <cDriver> parameter specifies the name of the Replaceable
* Database Driver to use to create the database. If it is not
* specified, then the Replaceable Database Driver in the current work
* area is used.
*
* The <lOpenNew> parameter specifies if the already created database is
* to be opened, and where. If NIL, the file is not opened. If True,
* it is opened in a New area, and if False it is opened in the current
* area (closing any file already occupying that area).
* The <cAlias> parameter specifies the alias name for the new opened
* database.
* $EXAMPLES$
* PROCEDURE Main()
* LOCAL nI, aStruct := { { "CHARACTER", "C", 25, 0 }, ;
* { "NUMERIC", "N", 8, 0 }, ;
* { "DOUBLE", "N", 8, 2 }, ;
* { "DATE", "D", 8, 0 }, ;
* { "LOGICAL", "L", 1, 0 }, ;
* { "MEMO1", "M", 10, 0 }, ;
* { "MEMO2", "M", 10, 0 } }
*
* REQUEST DBFCDX
*
* dbCreate( "testdbf", aStruct, "DBFCDX", .T., "MYALIAS" )
*
* RETURN
* $STATUS$
* R
* $COMPLIANCE$
* This function is not CA-Cl*pper compliant
* $FILES$
* Library is rdd
* Header is dbstruct.ch
* $SEEALSO$
* AFIELDS()*,DBSTRUCT()
* $END$
*/
/* $DOC$
* $TEMPLATE$
* Procedure
* $NAME$
* DBDELETE()
* $CATEGORY$
* API
* $SUBCATEGORY$
* Database
* $ONELINER$
* Mark a record for deletion in a database.
* $SYNTAX$
* DBDELETE()
* $DESCRIPTION$
* This function marks a record for deletion in the selected
* or aliased work area. If the DELETED setting is on, the record
* will still be visible until the record pointer in that work area
* is moved to another record.
*
* In a networking situation, this function requires that the record
* be locked prior to issuing the DBDELETE() function.
* $EXAMPLES$
* nId := 10
* USE testid INDEX testid NEW
* IF testid->( DBSEEK( nId ) )
* IF testid->( RLOCK() )
* DBDELETE()
* ENDIF
* ENDIF
* USE
* $STATUS$
* R
* $COMPLIANCE$
* C
* $FILES$
* Library is rdd
* $SEEALSO$
* DBRECALL()
* $END$
*/
/* $DOC$
* $TEMPLATE$
* Function
* $NAME$
* DBFILTER()
* $CATEGORY$
* API
* $SUBCATEGORY$
* Database
* $ONELINER$
* Return the filter expression in a work area
* $SYNTAX$
* DBFILTER() --> cFilter
* $RETURNS$
* DBFILTER() returns the filter expression.
* $DESCRIPTION$
* This function return the expression of the SET FILTER TO command
* for the current or designated work area. If no filter condition
* is present, a NULL string will be returned.
* $EXAMPLES$
* USE test INDEX test NEW
* SET FILTER TO Name == "Harbour"
* USE testid INDEX testid NEW
* SET FILTER TO Id == 1
* SELECT Test
* //
* ? DBFILTER()
* ? testid->( DBFILTER() )
* $STATUS$
* R
* $COMPLIANCE$
* C
* $FILES$
* Library is rdd
* $SEEALSO$
* DBRELATION(),DBRSELECT()
* $END$
*/
/* $DOC$
* $TEMPLATE$
* Procedure
* $NAME$
* DBGOBOTTOM()
* $CATEGORY$
* API
* $SUBCATEGORY$
* Database
* $ONELINER$
* Moves the record pointer to the bottom of the database.
* $SYNTAX$
* DBGOBOTTOM()
* $DESCRIPTION$
* This function moves the record pointer in the selected or aliased
* work area to the end of the file. The position of the record pointer
* is affected by the values in the index key or by an active FILTER
* condition. Otherwise, if no index is active or if no filter condition
* is present, the value of the record pointer will be LASTREC().
* $EXAMPLES$
* USE tests
* DBGOTOP()
* ? RECNO()
* DBGOBOTTOM()
* ? RECNO()
* USE
* $STATUS$
* R
* $COMPLIANCE$
* C
* $FILES$
* Library is rdd
* $SEEALSO$
* BOF(),EOF(),DBSKIP(),DBSEEK(),DBGOTOP()
* $END$
*/
/* $DOC$
* $TEMPLATE$
* Procedure
* $NAME$
* DBGOTO()
* $CATEGORY$
* API
* $SUBCATEGORY$
* Database
* $ONELINER$
* Position the record pointer to a specific location.
* $SYNTAX$
* DBGOTO(<xRecordNumber>)
* $ARGUMENTS$
* <xRecordNumber> Record number or unique identity
* $DESCRIPTION$
* This function places the record pointer, if working with a .dbf file,
* in selected or aliased work area at the record number specified by
* <xRecordNumber>. The position is not affected by an active index or
* by any enviromental SET condiction.
*
* The parameter <xRecordNumber> may be something other than a record
* number. In some data formats, for example, the value of <xRecordNumber>
* is a unique primary key while in other formats,<xRecordNumber> could
* be an array offset if the data set was an array.
*
* Issuing a DBGOTO(RECNO()) call in a network enviroment will refresh
* the database and index buffers. This is the same as a DBSKIP(0) call.
* $EXAMPLES$
* The following example uses DBGOTO() to iteratively process
* every fourth record:
*
* DBUSEAREA( .T., "DBFNTX", "sales", "sales", .T. )
* //
* // toggle every fourth record
* DO WHILE ! EOF()
* DBGOTO( RECNO() + 4 )
* sales->Group := "Bear"
* ENDDO
* $STATUS$
* R
* $COMPLIANCE$
* C
* $FILES$
* Library is rdd
* $SEEALSO$
* BOF(),EOF(),DBGOTOP(),DBGOBOTTOM(),DBSEEK(),DBSKIP()
* $END$
*/
/* $DOC$
* $TEMPLATE$
* Procedure
* $NAME$
* DBGOTOP()
* $CATEGORY$
* API
* $SUBCATEGORY$
* Database
* $ONELINER$
* Moves the record pointer to the top of the database.
* $SYNTAX$
* DBGOTOP()
* $DESCRIPTION$
* This function moves the record pointer in the selected or aliased
* work area to the top of the file. The position of the record pointer
* is affected by the values in the index key or by an active FILTER
* condition. Otherwise, if no index is active or if no filter condition
* is present, the value of RECNO() will be 1.
* $EXAMPLES$
* USE tests
* DBGOTOP()
* ? RECNO()
* DBGOBOTTOM()
* ? RECNO()
* USE
* $STATUS$
* R
* $COMPLIANCE$
* C
* $FILES$
* Library is rdd
* $SEEALSO$
* BOF(),EOF(),DBSKIP(),DBSEEK(),DBGOBOTTOM()
* $END$
*/
/* $DOC$
* $TEMPLATE$
* Procedure
* $NAME$
* DBRECALL()
* $CATEGORY$
* API
* $SUBCATEGORY$
* Database
* $ONELINER$
* Recalls a record previousy marked for deletion.
* $SYNTAX$
* DBRECALL()
* $DESCRIPTION$
* This function unmarks those records marked for deletion and
* reactivates them in the aliased or selected work area. If a record
* is DELETED and the DELETED setting is on, the record will still be
* visible for a DBRECALL() provided that the database record pointer
* has not been skipped. Once a record marked for deletion with the
* DELETE setting ON has been skipped, it no longer can be brought back
* with DBRECALL().
* $EXAMPLES$
* USE test NEW
* DBGOTO( 10 )
* DBDELETE()
* ? DELETED()
* DBRECALL()
* ? DELETED()
* USE
* $STATUS$
* R
* $COMPLIANCE$
* C
* $FILES$
* Library is rdd
* $SEEALSO$
* DBDELETE()
* $END$
*/
/* $DOC$
* $TEMPLATE$
* Function
* $NAME$
* DBRLOCK()
* $CATEGORY$
* API
* $SUBCATEGORY$
* Database
* $ONELINER$
* This function locks the record based on identity
* $SYNTAX$
* DBRLOCK([<xIdentity>]) --> lSuccess
* $ARGUMENTS$
* <xIdentity> Record identifier
* $RETURNS$
* DBRLOCK() returns a logical true (.T.) if lock was successful
* $DESCRIPTION$
* This function attempts to lock a record which is identified
* by <xIdentity> in the active data set. If the lock is successful
* the function will return a logical true (.T.) value; otherwise
* a logical false (.F.) will be returned. If <xIdentity> is not
* passed it will be assumed to lock the current active record/data
* item.
* $EXAMPLES$
* PROCEDURE Main()
* LOCAL x := 0
* USE tests NEW
* FOR x := 1 TO reccount()
* IF ! DBRLOCK()
* DBUNLOCK()
* ENDIF
* NEXT
* USE
* $STATUS$
* R
* $COMPLIANCE$
* C
* $FILES$
* Library is rdd
* $SEEALSO$
* DBUNLOCK(),DBUNLOCKALL(),FLOCK(),RLOCK()
* $END$
*/
/* $DOC$
* $TEMPLATE$
* Function
* $NAME$
* DBRLOCKLIST()
* $CATEGORY$
* API
* $SUBCATEGORY$
* Database
* $ONELINER$
* This function return a list of locked records in the database work area
* $SYNTAX$
* DBRLOCKLIST() --> aRecordLocks
* $RETURNS$
* <aRecordList> is an array of lock records
* $DESCRIPTION$
* This function will return an array of locked records in a given
* and active work area. If the return array is an empty array
* (meaning no elements in it), then there are no locked records in that
* work area.
* $EXAMPLES$
* PROCEDURE Main()
* LOCAL aList := {}
* LOCAL x := 0
* USE tests NEW
* DBGOTO( 10 )
* RLOCK()
* DBGOTO( 100 )
* RLOCK()
* aList := DBRLOCKLIST()
* FOR x := 1 TO Len( aList )
* ? aList[ x ]
* NEXT
* USE
* RETURN
* $STATUS$
* R
* $COMPLIANCE$
* C
* $FILES$
* Library is rdd
* $SEEALSO$
* RLOCK(),DBRLOCK(),DBRUNLOCK()
* $END$
*/
/* $DOC$
* $TEMPLATE$
* Procedure
* $NAME$
* DBRUNLOCK()
* $CATEGORY$
* API
* $SUBCATEGORY$
* Database
* $ONELINER$
* Unlocks a record based on its identifier
* $SYNTAX$
* DBRUNLOCK([<xIdentity>])
* $ARGUMENTS$
* <xIdentity> Record identifier, typically a record number
* $DESCRIPTION$
* This function will attempt to unlock the record specified as
* <xIdentity>, which in a .dbf format is the record number. If not
* specified, them the current active record/data item will be
* unlocked
* $EXAMPLES$
* PROCEDURE Main()
* USE tests NEW
* DBGOTO( 10 )
* IF RLOCK()
* ? tests->ID
* DBRUNLOCK()
* ENDIF
* USE
* RETURN
* $STATUS$
* R
* $COMPLIANCE$
* C
* $FILES$
* Library is rdd
* $SEEALSO$
* RLOCK(),DBRLOCK(),DBRLOCKLIST()
* $END$
*/
/* $DOC$
* $TEMPLATE$
* Function
* $NAME$
* DBSEEK()
* $CATEGORY$
* API
* $SUBCATEGORY$
* Database
* $ONELINER$
* Searches for a value based on an active index.
* $SYNTAX$
* DBSEEK(<expKey>, [<lSoftSeek>],[<lFindLast>]) --> lFound
* $ARGUMENTS$
* <expKey> Any expression
*
* <lSoftSeek> Toggle SOFTSEEK condition
*
* <lFindLast> is an optional logical value that set the current
* record position to the last record if successful
* $RETURNS$
* DBSEEK() returns logical true (.T.) if found, otherwise false
* $DESCRIPTION$
* This function searches for the first record in a database file whose
* index key matches <expKey>. If the item is found, the function will
* return a logical true (.T.), the value of FOUND() wilI be a logical
* true (.T.), and the value of EOF() wilI be a logical false (.F.). If
* no item is found. then the function will return a logical false, the
* value of FOUND( ) will be a logical false (.F.), and the value of
* EOF( ) will be a logical true (.T.).
*
* This function always "rewinds" the database pointer and starts the
* search from the top of the file.
*
* If the SOFTSEEK flag is on or if <lSoftSeek> is set to a logical true
* (.T.) the value of FOUND() will be a logical false and EOF() will be
* false if there is an item in the index key with a greater value than
* the key expression <expKey>; at this point the record pointer will
* position itself on that record. However, if there is no greater key
* in the index,EOF() will return a logical true (.T.) value. If
* <lSoftSeek> is not passed, the function will look to the internal
* status of SOFTSEEK before performing the operation. The default of
* <lSoftSeek> is a logical false (.F.)
* $EXAMPLES$
* PROCEDURE Main()
* USE tests NEW INDEX tests
* DBGOTO( 10 )
* nId := tests->nId
* IF tests->( DBSEEK( nId ) )
* IF RLOCK()
* ? tests->Name
* DBRUNLOCK()
* ENDIF
* ENDIF
* USE
* RETURN
*
* ACCEPT "Employee name: " TO cName
* IF Employee->( DBSEEK( cName ) )
* Employee->( ViewRecord() )
* ELSE
* ? "Not found"
* ENDIF
* $STATUS$
* S
* $COMPLIANCE$
* DBSEEK() is Compatible with CA-Cl*pper 5.3
* $FILES$
* Library is rdd
* $SEEALSO$
* DBGOBOTTOM(),DBGOTOP(),DBSKIP(),EOF(),BOF(),FOUND()
* $END$
*/
/* $DOC$
* $TEMPLATE$
* Procedure
* $NAME$
* DBSELECTAREA()
* $CATEGORY$
* API
* $SUBCATEGORY$
* Database
* $ONELINER$
* Change to another work area
* $SYNTAX$
* DBSELECTAREA(<xArea>) -
* $ARGUMENTS$
* <xArea> Alias or work area
* $DESCRIPTION$
* This function moves the Harbour internal primary focus to the work
* area designated by <xArea>. If <xArea> is numeric, then it will
* select the numeric work area; if <xArea> is character,then it will
* select the work area with the alias name.
*
* DBSELECTAREA(0) will select the next avaliable and unused work area.
* Up to 255 work areas are supported. Each work area has its own alias
* and record pointer, as well as its own FOUND(), DBFILTER(),
* DBRSELECT() and DBRELATION() function values.
* $EXAMPLES$
* PROCEDURE Main()
* LOCAL nId
* USE tests NEW INDEX tests
* USE tests1 NEW INDEX tests1
* DBSELECTAREA( 1 )
* nId := tests->Id
* DBSELECTAREA( 2 )
* IF DBSEEK( nId )
* ? tests1->cName
* ENDIF
* DBCLOSEALL()
* RETURN
* $STATUS$
* R
* $COMPLIANCE$
* C
* $FILES$
* Library is rdd
* $SEEALSO$
* DBUSEAREA(),SELECT()
* $END$
*/
/* $DOC$
* $TEMPLATE$
* Function
* $NAME$
* DBSETDRIVER()
* $CATEGORY$
* API
* $SUBCATEGORY$
* Database
* $ONELINER$
* Establishes the RDD name for the selected work area
* $SYNTAX$
* DBSETDRIVER( [<cDriver>] ) --> cCurrentDriver
* $ARGUMENTS$
* <cDriver> Optional database driver name
* $RETURNS$
* DBSETDRIVER() returns the name of active driver
* $DESCRIPTION$
* This function returns the name of the current database driver for the
* selected work area. The default will be "DBFNTX". If specified,
* <cDriver> contains the name of the database driver that should be
* used to activate and manage the work area. If the specified driver is
* not avaliable,this function will have no effect.
* $EXAMPLES$
* DBSETDRIVER("ADS")
* $STATUS$
* R
* $COMPLIANCE$
* C
* $FILES$
* Library is rdd
* $SEEALSO$
* DBUSEAREA()
* $END$
*/
/* $DOC$
* $TEMPLATE$
* Procedure
* $NAME$
* DBSKIP()
* $CATEGORY$
* API
* $SUBCATEGORY$
* Database
* $ONELINER$
* Moves the record pointer in the selected work area.
* $SYNTAX$
* DBSKIP([<nRecords>])
* $ARGUMENTS$
* <nRecords> Numbers of records to move record pointer.
* $DESCRIPTION$
* This function moves the record pointer <nRecords> in the selected or
* aliased work area. The default value for <nRecords> will be 1.
* A DBSKIP(0) will flush and refresh the internal database bufer and
* make any changes made to the record visible without moving the record
* pointer in either direction.
* $EXAMPLES$
* PROCEDURE Main()
* USE tests NEW
* DBGOTOP()
* DO WHILE ! EOF()
* ? tests->Id, tests->Name
* DBSKIP()
* ENDDO
* USE
* RETURN
* $STATUS$
* R
* $COMPLIANCE$
* C
* $FILES$
* Library is rdd
* $SEEALSO$
* BOF(),DBGOBOTTOM(),DBGOTOP(),DBSEEK(),EOF()
* $END$
*/
/* $DOC$
* $TEMPLATE$
* Procedure
* $NAME$
* DBSETFILTER()
* $CATEGORY$
* API
* $SUBCATEGORY$
* Database
* $ONELINER$
* Establishes a filter condition for a work area.
* $SYNTAX$
* DBSETFILTER(<bCondition>, [<cCondition>])
* $ARGUMENTS$
* <bCondition> Code block expression for filtered evaluation.
*
* <cCondition> Optional character expression of code block.
* $DESCRIPTION$
* This function masks a database so that only those records that meet
* the condition prescribed by the expression in the code block
* <bCondition> and literally expressed as <cCondition> are visible.
* If <cCondition> is not passed to this function,then the DBFILTER()
* function will return an empty string showing no filter in that work
* area which in fact,would be not correct.
* $EXAMPLES$
* PROCEDURE Main()
* USE tests NEW
* DBSETFILTER( {|| tests->Id <100 }, "tests->Id <100" )
* DBGOTOP()
* $STATUS$
* R
* $COMPLIANCE$
* C
* $FILES$
* Library is rdd
* $SEEALSO$
* DBFILTER(),DBCLEARFILTER()
* $END$
*/
/* $DOC$
* $TEMPLATE$
* Function
* $NAME$
* DBSTRUCT()
* $CATEGORY$
* API
* $SUBCATEGORY$
* Database
* $ONELINER$
* Creates a multidimensional array of a database structure.
* $SYNTAX$
* DBSTRUCT() --> aStruct
* $RETURNS$
* DBSTRUCT() returns an array pointer to database structure
* $DESCRIPTION$
* This function returns a multidimensional array. This array has array
* pointers to other arrays,each of which contains the characteristic
* of a field in the active work area. The lenght of this array is based
* in the number of fields in that particular work area. In other words,
* LEN(DBSTRUCT()) is equal to the value obtained from FCOUNT().
* Each subscript position
* $EXAMPLES$
* #include "dbstruct.ch"
* PROCEDURE Main()
* LOCAL aStru, x
* USE tests NEW
* aStru := dbStruct()
* FOR x := 1 TO LEN( aStru )
* ? aStru[ x ][ DBS_NAME ]
* NEXT
* USE
* RETURN
* $STATUS$
* R
* $COMPLIANCE$
* C
* $FILES$
* Library is rdd
* Header is dbstruct.ch
* $SEEALSO$
* AFIELDS()*
* $END$
*/
/* $DOC$
* $TEMPLATE$
* Procedure
* $NAME$
* DBUNLOCK()
* $CATEGORY$
* API
* $SUBCATEGORY$
* Database
* $ONELINER$
* Unlock a record or release a file lock
* $SYNTAX$
* DBUNLOCK()
* $DESCRIPTION$
* This function releases the file or record lock in the currently
* selected or aliased work area. It will not unlock an associated lock
* in a related databases.
* $EXAMPLES$
* nId := 10
* USE testid INDEX testid NEW
* IF testid->( DBSEEK( nId ) )
* IF testid->( RLOCK() )
* DBDELETE()
* ELSE
* DBUNLOCK()
* ENDIF
* ENDIF
* USE
* $STATUS$
* R
* $COMPLIANCE$
* C
* $FILES$
* Library is rdd
* $SEEALSO$
* DBUNLOCKALL(),FLOCK(),RLOCK()
* $END$
*/
/* $DOC$
* $TEMPLATE$
* Procedure
* $NAME$
* DBUNLOCKALL()
* $CATEGORY$
* API
* $SUBCATEGORY$
* Database
* $ONELINER$
* Unlocks all records and releases all file locks in all work areas.
* $SYNTAX$
* DBUNLOCKALL()
* $DESCRIPTION$
* This function will remove all file and record locks in all work area.
* $EXAMPLES$
* nId := 10
* USE tests INDEX testid NEW
* USE tests1 INDEX tests NEW
* IF testid->( DBSEEK( nId ) )
* IF testid->( RLOCK() )
* DBDELETE()
* ELSE
* DBUNLOCK()
* ENDIF
* ELSE
* DBUNLOCKALL()
* ENDIF
* USE
* $STATUS$
* R
* $COMPLIANCE$
* C
* $FILES$
* Library is rdd
* $SEEALSO$
* DBUNLOCK(),FLOCK(),RLOCK()
* $END$
*/
/* $DOC$
* $TEMPLATE$
* Procedure
* $NAME$
* DBUSEAREA()
* $CATEGORY$
* API
* $SUBCATEGORY$
* Database
* $ONELINER$
* Opens a work area and uses a database file.
* $SYNTAX$
* DBUSEAREA( [<lNewArea>], [<cDriver>], <cName>, [<xcAlias>],
* [<lShared>], [<lReadonly>])
* $ARGUMENTS$
* <lNewArea> A optional logical expression for the new work area
*
* <cDriver> Database driver name
*
* <cName> File Name
*
* <xcAlias> Alias name
*
* <lShared> Shared/exclusive status flag
*
* <lReadonly> Read-write status flag.
* $DESCRIPTION$
* This function opens an existing database named <cName> in the current
* work area. If <lNewArea> is set to a logical true (.T.) value, then
* the database <cName> will be opened in the next available and unused
* work area. The default value of <lNewArea> is a logical false (.F.).
* If used, <cDriver> is the name of the database driver associated with
* the file <cName> that is opened. The default for this will be the
* value of DBSETDRlVER().
*
* IF used, <xcAlias> contains the alias name for that work area, If not
* specified, the root name of the database specified in <cName> will be
* used.
*
* If <lShared> is set to a logical true (.T.) value, the database that
* is specified in <cName> will be opened by the user EXCLUSIVELY. Thus
* locking it from all other nodes or users on the network. If <lShared>
* is set to a logical false (.F.) value, then the database will be in
* SHARED mode. If <lShared> is not passed, then the function will turn
* to the internal setting of SET EXCLUSIVE to determine a setting.
*
* If <lReadOnly> is specified, the file will be set to READ ONLY mode.
* If it is not specified, the file will he opened in normal read-write
* mode.
* $EXAMPLES$
* DBUSEAREA( .T.,, "tests" )
* $STATUS$
* R
* $COMPLIANCE$
* C
* $FILES$
* Library is rdd
* $SEEALSO$
* DBCLOSEAREA(),DBSETDRIVER(),SELECT(),SET()
* $END$
*/