[<<Previous Entry]
[^^Up^^]
[Next Entry>>]
[Menu]
[About The Guide]
DBORDERINFO()
Return and optionally change information about orders and index files
------------------------------------------------------------------------------
Syntax
DBORDERINFO(<nInfoType>, [<cIndexFile>],
[<cOrder> | <nPosition>],
[<expNewSetting>]) --> uCurrentSetting
Arguments
<nInfoType> determines the type of information as specified by the
constants below. Note, however, that not all constants are supported
for all RDDs. These constants are defined in the Dbinfo.ch header file,
which must be included (#include) in your application.
Order/Index Information Type Constants
------------------------------------------------------------------------
Constant Description
------------------------------------------------------------------------
DBOI_CONDITION For condition of the specified order as a
string.
DBOI_CUSTOM Logical flag indicating whether the
specified order is custom-built (for RDDs
that support custom-built orders). Note
that although you can turn the custom-
built flag on for a standard order by
specifying true (.T.) for the <uNewSetting>
argument, you cannot turn a custom-built
order into a standard order. Specifying
false (.F.) for <uNewSetting> is the same
as not specifying the argument at all--
both return the current setting.
DBOI_EXPRESSION Order key expression of the specified
order as a string.
DBOI_FILEHANDLE Handle of the specified index file as a
number.
DBOI_HPLOCKING Logical flag indicating whether the
specified index file uses the high
performance index locking schema.
DBOI_INDEXEXT (DBOI_BAGEXT) Default index file extension as a string.
DBOI_INDEXNAME (DBOI_BAGNAME) Name of the specified index file as a
string.
DBOI_ISCOND Logical flag that determines whether the
specified order was defined using a FOR
condition.
DBOI_ISDESC Logical flag that determines if the
specified order is descending. For
drivers that support dynamically setting
the descending flag at runtime, specify
the new value as a logical, using
DBORDERINFO(DBOI_ISDESC, [<cIndexFile>],
[<cOrder> | <nPosition>], <lNewSetting>).
The current setting is returned before it
is changed.
DBOI_KEYADD Logical flag indicating whether a key has
been successfully added to the specified
custom-built order.
DBOI_KEYCOUNT Number of keys in the specified order.
DBOI_KEYDEC Number of decimals in the key of the
specified order.
DBOI_KEYDELETE Logical flag indicating whether a key has
been successfully deleted from the
specified custom-built order.
DBOI_KEYGOTO Logical flag indicating whether the record
pointer has been successfully moved to a
record specified by its logical record
number in the controlling order.
DBOI_KEYSINCLUDED Number of keys included in the specified
order so far. This is primarily useful
for conditional orders. It can be used
during the status display process (with
the EVAL clause of the INDEX command).
DBOI_KEYSIZE Size of the key in the specified order as
a number.
DBOI_KEYTYPE Data type of the key in the specified
order as a string.
DBOI_KEYVAL Key value of the current record from the
controlling order.
DBOI_LOCKOFFSET Locking offset for the specified index
file as a numeric value.
DBOI_NAME Name of the specified order as a string.
DBOI_NUMBER Numeric position of the specified order in
the order list.
DBOI_ORDERCOUNT Number of orders in the specified index
file.
DBOI_POSITION Logical record number of the current
record within the specified order.
DBOI_RECNO Physical record number of the current
record within the specified order.
DBOI_SCOPEBOTTOM Bottom boundary of the scope (as a number)
for the specified order.
DBOI_SCOPEBOTTOMCLEAR Clears the bottom boundary of the scope
for the specified order.
DBOI_SCOPETOP Top boundary of the scope (as a number)
for the specified order.
DBOI_SCOPETOPCLEAR Clears the top boundary of the scope for
the specified order.
DBOI_SETCODEBLOCK Key for the specified order as a code
block.
DBOI_SKIPUNIQUE Logical flag indicating whether the record
pointer has been successfully moved to the
next or previous unique key in the
controlling order.
DBOI_UNIQUE Logical flag indicating whether the
specified order has the unique attribute
set.
------------------------------------------------------------------------
Important! DBOI_USER is a constant that returns the minimum value
that third-party RDD developers can use for defining new <nInfoType>
parameters. Values less than DBOI_USER are reserved for Computer
Associates development.
<cIndexFile> is the name of an index file, including an optional
drive and directory (no extension should be specified). Use this
argument with <cOrder> to remove ambiguity when there are two or more
orders with the same name in different index files.
<cOrder> | <nPosition> is the name of the order about which you
want to obtain information or a number representing its position in the
order list. For single-order index files, the order name is the
eight-letter index file name. Using the order name is the preferred
method since the position may be difficult to determine using
multiple-order index files. Invalid values are ignored. If no index
file or order is specified, the controlling order is assumed.
<expNewSetting> is reserved for RDDs that allow the file information
to be changed, in addition to being retrieved. None of the RDDs
supplied with CA-Clipper support this argument. It can be omitted or
specified as NIL.
Returns
If <expNewSetting> is not specified, DBORDERINFO() returns the current
setting. If <expNewSetting> is specified, the previous setting is
returned.
Description
DBORDERINFO() retrieves information about the orders and index files.
By default, DBORDERINFO() operates on the currently selected work area.
It can be made to operate on an unselected work area by specifying it
within an aliased expression.
Examples
. This example uses DBOI_NAME to save the current controlling
order. After changing to a new controlling order, it uses the saved
value to restore the original order:
#include Dbinfo.ch
USE Customer INDEX Name, Serial NEW
cOrder := DBORDERINFO(DBOI_NAME) // Name
Customer->DBSETORDER("Serial")
? DBORDERINFO(DBOI_NAME) // Serial
Customer->DBSETORDER(cOrder)
? DBORDERINFO(DBOI_NAME) // Name
. This example uses aliased expressions to return the default
index file extension (using DBOI_INDEXEXT) in two different work
areas:
#include Dbinfo.ch
USE Sales INDEX All_Sales VIA "DBFCDX" NEW
USE Customer INDEX Name, Serial VIA "DBFNTX" NEW
? Sales->DBORDERINFO(DBOI_INDEXEXT) // .CDX
? Customer->DBORDERINFO(DBOI_INDEXEXT) // .NTX
. In this example, DBORDERINFO(DBOI_INDEXEXT) checks for the
existence of the Customer index file independent of the RDD linked
into the current work area:
#include Dbinfo.ch
USE Customer NEW
IF !FILE( "Customer" + DBORDERINFO(DBOI_INDEXEXT))
Customer->DBCREATEINDEX("Customer", "CustName",;
{||Customer->CustName} )
ENDIF
. This example accesses the key expression of several orders
from the same index file:
#include Dbinfo.ch
USE Customer INDEX All_Cust VIA "DBFMDX" NEW
Customer->DBSETORDER("Serial")
? DBORDERINFO(DBOI_EXPRESSION,, "Name")
// Result: key expression for name order
? DBORDERINFO(DBOI_EXPRESSION,, "Serial")
// Result: key expression for serial order
. This example uses DBORDERINFO() as part of a TOTAL ON key
expression. Since DBORDERINFO() returns the expression as a string,
it is specified using a macro expression to force evaluation of the
key expression:
#include Dbinfo.ch
USE Sales INDEX Salesman NEW
TOTAL ON &(DBORDERINFO(DBOI_EXPRESSION)) ;
FIELDS SaleAmount TO Summary
. In this example, All_Cust.mdx contains three orders named
CuAcct, CuName, CuZip. The DBOI_INDEXNAME constant is used to
display the name of the index file using one of its orders:
#include Dbinfo.ch
USE Customer VIA "DBFNTX" NEW
Customer->DBSETINDEX("All_Cust")
? DBORDERINFO(DBOI_INDEXNAME,, "CuName")
// Returns: All_Cust
. The following example searches for CuName in the order list:
#include Dbinfo.ch
USE Customer VIA "DBFNTX" NEW
Customer->DBSETINDEX("CuAcct")
Customer->DBSETINDEX("CuName")
Customer->DBSETINDEX("CuZip")
? DBORDERINFO(DBOI_NUMBER,, "CuName") // 2
. This example retrieves the FOR condition from an order:
#include Dbinfo.ch
USE Customer NEW
INDEX ON Customer->Acct TO Customer ;
FOR Customer->Acct > "AZZZZZ"
? DBORDERINFO(DBOI_CONDITION,, "Customer")
// Returns: Customer->Acct > "AZZZZZ"
Files Library is CLIPPER.LIB, header file is Dbinfo.ch.
See Also:
DBFIELDINFO()
DBINFO()
DBRECORDINFO()
This page created by ng2html v1.05, the Norton guide to HTML conversion utility.
Written by Dave Pearson