Functions.VoDbOrdCreate 方法 | |
在索引文件中创建或替换一个顺序。
在索引文件中创建或替换订单。
命名空间:
XSharp.RT
程序集:
XSharp.RT (在 XSharp.RT.dll 中) 版本:2.22 GA
语法 FUNCTION VoDbOrdCreate(
cIndexFile AS STRING,
cOrder AS USUAL,
cKeyValue AS STRING,
cbKeyValue AS USUAL,
lUnique AS LOGIC,
ptrCondInfo AS DbOrderCondInfo
) AS LOGIC
public static bool VoDbOrdCreate(
string cIndexFile,
__Usual cOrder,
string cKeyValue,
__Usual cbKeyValue,
bool lUnique,
DbOrderCondInfo ptrCondInfo
)
查看代码参数
- cIndexFile
- 类型:String
目标索引文件的名称,包括可选的驱动器、目录和扩展名。参见 SetDefault() 和 SetPath() 了解文件搜索和创建规则。
默认扩展名由 RDD 确定,可以使用 DBOrderInfo(DBOI_INDEXEXT) 获取。
在支持生产索引的 RDD 中,如果未指定 cIndexFile,则假定使用生产索引文件(即与数据库文件同名的文件)。
如果 cIndexFile 不存在,则创建它。
如果 cIndexFile 存在,INDEX 命令必须首先获得文件的独占使用权。
如果尝试失败(例如,文件被另一个进程打开),NetErr() 将设置为 TRUE。
如果尝试成功,且 RDD 指定索引文件只能包含单个顺序,则文件的当前内容将被新顺序覆盖。
如果 RDD 指定索引文件可以包含多个顺序,则如果 cIndexFile 中不存在该顺序,则添加该顺序;否则替换它。
- cOrder
- 类型:__Usual
要创建的顺序的名称。
对于单顺序索引文件,不带扩展名或路径的文件名是默认的顺序名。
对于多顺序索引文件,顺序名是必需的。
- cKeyValue
- 类型:String
以字符串形式指定的顺序键表达式。
这是存储在索引文件中的键表达式,用于定位键值和重新创建顺序等目的。
虽然 cKeyValue 是可选的,但强烈建议指定此参数。没有它,顺序将使用 cbKeyValue 正确创建,但键表达式将作为 NULL_STRING 存储在索引文件中,使顺序无法进行后续访问。
- cbKeyValue
- 类型:__Usual
以代码块形式指定的顺序键表达式。
此代码块用于初始创建顺序。
如果不提供 cbKeyValue,它将从 cKeyValue 宏编译(例如,{||&cKeyValue})。
键表达式的数据类型和所有其他限制,包括键的长度和键表达式,由 RDD 确定。
- lUnique
- 类型:Boolean
TRUE 创建唯一顺序,仅包含具有唯一键值的记录;FALSE 使用数据库文件中的所有记录。
如果省略 lUnique,则使用 SetUnique() 设置。注意,已删除记录的键也包含在索引中,可能会隐藏未删除记录的键。
- ptrCondInfo
- 类型:DbOrderCondInfo
指向定义条件和范围信息的数据结构(_DBORDERCONDINFO)的指针。
注意:有关其余参数的描述,请参见 DBCreateOrder()。
返回值
类型:
Boolean
如果成功则返回 TRUE;否则返回 FALSE。
返回值
类型:
Boolean备注
默认情况下,此函数在当前选定的工作区上操作。
可以通过在别名表达式中指定来使其在未选定的工作区上操作。
DBCreateOrder() 使用当前的 DBSetOrderCondition() 来确定顺序的条件(例如,其范围、for 条件和 while 条件)。
创建(或替换)后,新顺序将添加到工作区的顺序列表中。工作区已关联的其他顺序(包括控制顺序)不受影响。
注意:
虽然此函数设计用于处理单顺序和多顺序索引文件,但您可能会发现使用 DBCreateIndex() 创建单顺序索引文件更容易。
提示: |
---|
副作用: DBCreateOrder() 保证创建一个顺序,当成为控制顺序时,将对数据库施加指定的逻辑顺序。
键表达式不一定在任何特定时间、以任何特定方式或在任何特定记录或一系列记录上进行评估。
如果键表达式依赖于数据库文件或工作区外部的信息,其效果是不可预测的。
如果键表达式改变工作区的状态(例如,移动到不同的记录或更改记录的内容),其效果是不可预测的。
键评估: 在评估键表达式之前,相关工作区会自动选为当前工作区;之后会自动恢复先前选择的工作区。
|
备注
VODBOrdCreate() 与 DBCreateOrder() 相同,但它是强类型的,cIndexFile 和 cOrder 参数的顺序相反,并且允许您使用数据结构指定条件信息。
然而,此函数不调用错误处理程序,因此如果失败,不会产生运行时错误消息或创建错误对象。因此,检查返回值以确定函数是否成功可能很重要。
全局结构 StrucErrInfo 将包含有关发生的任何错误的必要信息。
示例
此示例创建顺序 CUACCT 并将其添加到生产索引文件 CUSTOMER 中:
1USE customer VIA "DBFMDX" NEW
2Customer->DBCreateOrder("CuAcct", "Customer", ;
3 "Acct", {|| Customer->Acct})
示例 参见 引用
DbSetOrderCondition(__Usual, __Usual, __Usual, __Usual, __Usual, __Usual, __Usual, __Usual, __Usual, __Usual, __Usual, __Usual, __Usual, __Usual, __Usual, __Usual, __Usual, __Usual, __Usual)