点击或拖拽改变大小

Functions.DbOrderInfo 方法

X#
返回并可选择性地更改有关索引顺序和索引文件的信息。

命名空间:  XSharp.RT
程序集:  XSharp.RT (在 XSharp.RT.dll 中) 版本:2.22 GA
语法
 FUNCTION DbOrderInfo(
	kInfoType,
	cIndexFile,
	uOrder,
	uNewSetting
) AS USUAL CLIPPER
查看代码

参数

kInfoType (Optional)
类型:__Usual
指定信息的类型。
常量列表如下。但请注意,并非所有常量都被所有RDD支持。
重要提示!DBOI_USER是一个常量,它返回第三方RDD开发人员可以用于定义新的kInfoType参数的最小值。小于DBOI_USER的值保留给Computer Associates开发使用。
cIndexFile (Optional)
类型:__Usual
索引文件的名称,包括可选的驱动器和目录(不应指定扩展名)。
cOrder一起使用此参数,以消除不同索引文件中存在两个或多个同名顺序时的歧义。
如果当前进程未打开cIndexFile,则会引发运行时错误。
uOrder (Optional)
类型:__Usual
您想获取信息的顺序名称,或表示其在顺序列表中位置的数字。(对于单顺序索引文件,顺序名称是八字母的索引文件名。)
使用顺序名称是首选方法,因为使用多顺序索引文件时可能难以确定位置。无效值将被忽略。
如果未指定索引文件或顺序,则假定为控制顺序。
uNewSetting (Optional)
类型:__Usual
如果指定,此参数用于更改设置的值。
数据类型(以及是否可以指定uNewSetting)取决于kInfoType常量,并在下面的常量部分中有所说明。

返回值

类型:__Usual
如果未指定uNewSetting,DBOrderInfo()返回当前设置。
如果指定了uNewSetting,则返回先前的设置。
备注
Constant描述
DBOI_CONDITION返回指定顺序的条件作为字符串。
DBOI_CUSTOM 返回并可选地设置指定顺序是否为自定义构建(对于支持自定义构建顺序的 RDD)。请注意, 虽然您可以通过在 uNewSetting 参数中指定 TRUE 来为标准顺序打开自定义构建标志, 但您不能将自定义构建顺序转换为标准顺序。 指定 FALSE 为 uNewSetting 的值与不指定参数一样—在更改参数之前返回当前设置。
DBOI_EXPRESSION返回指定顺序的键表达式作为字符串。
DBOI_FILEHANDLE返回指定索引文件的句柄作为 IntPtr。
DBOI_FILESTREAM返回指定索引文件的文件流。
DBOI_FULLPATH返回指定索引文件的完整路径作为字符串。
DBOI_HPLOCKING返回一个逻辑标志,指示指定索引文件是否使用高性能索引锁定模式(参见 IndexHPLock() 函数)。
DBOI_INDEXEXT返回默认的索引文件扩展名作为字符串。
DBOI_INDEXNAME返回指定索引文件的名称作为字符串。
DBOI_ISCOND返回一个逻辑标志,确定指定顺序是否使用 for 条件定义。
DBOI_ISDESC 返回一个逻辑标志,确定指定顺序是否为降序。对于支持在运行时动态设置降序标志的驱动程序,可以使用逻辑值指定新值,使用 DBServer:OrderInfo(DBOI_ISDESC, [<oFSIndexFile> | <cIndexFile>], [<cOrder> | <nPosition>], <lNewSetting>)。在更改参数之前返回当前设置。
DBOI_KEYCOUNT返回指定顺序的键数。
DBOI_KEYDEC返回指定顺序的键中的小数位数。
DBOI_KEYSINCLUDED返回指定顺序中包含的键的数量。这主要用于条件顺序。它可以在状态显示过程中使用(使用 INDEX 命令的 EVAL 子句)。
DBOI_KEYSIZE返回指定顺序的键的大小作为数字。
DBOI_KEYTYPE返回指定顺序的键的数据类型作为字符串。
DBOI_KEYVAL返回指定顺序中当前记录的键值。
DBOI_LOCKOFFSET返回指定索引文件的锁定偏移量(参见 NewIndexLock() 函数)作为数值。
DBOI_NAME返回指定顺序的名称作为字符串。
DBOI_NUMBER返回指定顺序在顺序列表中的数值位置。
DBOI_ORDERCOUNT返回指定索引文件中定义的顺序数。
DBOI_POSITION返回指定顺序中当前记录的逻辑记录号。
DBOI_RECNO返回指定顺序中当前记录的物理记录号。
DBOI_SCOPEBOTTOMs返回指定顺序的作用域的底部边界。
DBOI_SCOPETOP返回指定顺序的作用域的顶部边界。
DBOI_SETCODEBLOCK返回指定顺序的键作为代码块。
DBOI_UNIQUE返回一个逻辑标志,指示指定顺序是否具有唯一属性。
DBOI_USER用于自定义的开始。
提示 提示:
DBOI_USER 是一个常量,返回第三方 RDD 开发人员可以用于自定义的最小值。 小于 DBOI_USER 的值保留给 X# 开发。
默认情况下,此函数在当前选定的工作区上操作。
可以通过在别名表达式中指定来使其在未选定的工作区上操作。
示例
此示例使用DBOI_NAME保存当前控制顺序。
更改为新的控制顺序后,它使用保存的值恢复原始顺序:
X#
1USE customer INDEX name, serial NEW
2cOrder := DBOrderInfo(DBOI_NAME)        // name
3Customer->DBSetOrder("serial")
4? DBOrderInfo(DBOI_NAME)            // serial
5Customer->DBSetOrder(cOrder)
6? DBOrderInfo(DBOI_NAME)            // name
此示例使用别名表达式在两个不同的工作区中返回默认索引文件扩展名(使用DBOI_INDEXEXT):
X#
1USE sales INDEX all_sales VIA "DBFCDX" NEW
2USE customer INDEX name, serial VIA "DBFNTX" NEW
3? Sales->DBOrderInfo(DBOI_INDEXEXT)    // .CDX
4? Customer->DBOrderInfo(DBOI_INDEXEXT)    // .NTX
在此示例中,DBOrderInfo(DBOI_INDEXEXT)检查CUSTOMER索引文件是否存在,而不依赖于链接到当前工作区的RDD:
X#
1USE customer NEW
2IF !File("customer" + DBOrderInfo(DBOI_INDEXEXT))
3    Customer->DBCreateIndex("customer", "CustName",;
4        {|| Customer->CustName})
5ENDIF
此示例访问同一索引文件中几个顺序的键表达式:
X#
1USE customer INDEX all_cust VIA "DBFMDX" NEW
2Customer->DBSetOrder("serial")
3? DBOrderInfo(DBOI_EXPRESSION,, "name")
4// 结果:name顺序的键表达式
5? DBOrderInfo(DBOI_EXPRESSION,, "serial")
6// 结果:serial顺序的键表达式
此示例将DBOrderInfo()用作TOTAL ON键表达式的一部分。由于DBOrderInfo()将表达式作为字符串返回,因此使用宏表达式来强制评估键表达式:
X#
1USE sales INDEX salesman NEW
2TOTAL ON &(DBOrderInfo(DBOI_EXPRESSION)) ;
3    FIELDS SaleAmount TO summary
在此示例中,ALL_CUST.MDX包含三个名为CUACCT、CUNAME、CUZIP的顺序。
DBOI_INDEXNAME常量用于使用其中一个顺序显示索引文件的名称:
X#
1USE customer VIA "DBFNTX" NEW
2Customer->DBSetIndex("all_cust")
3? DBOrderInfo(DBOI_INDEXNAME,, "cuname")
4// 返回:all_cust
以下示例在顺序列表中搜索CUNAME:
X#
1USE customer VIA "DBFNTX" NEW
2Customer->DBSetIndex("cuacct")
3Customer->DBSetIndex("cuname")
4Customer->DBSetIndex("cuzip")
5? DBOrderInfo(DBOI_NUMBER,, "cuname")    // 2
此示例从顺序中检索"for条件":
X#
1USE customer NEW
2INDEX ON Customer->Acct TO customer ;
3    FOR Customer->Acct > "AZZZZZ"
4? DBOrderInfo(DBOI_CONDITION,, "customer")
5// 返回:Customer->Acct > "AZZZZZ"
参见