点击或拖拽改变大小

Functions.DbFieldInfo 方法

X#
返回并可选择性地更改字段信息。

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

参数

kInfoType (Optional)
类型:__Usual
指定信息类型。
常量在下面的"常量"部分中描述。但请注意,并非所有 RDD 都支持所有常量。
有关支持的常量列表,请参见"备注"部分。
nFieldPos (Optional)
类型:__Usual
数据库文件结构中字段的位置或指向 BLOB 的数字指针。只有某些设计用于处理 BLOB 字段的 kInfoType 常量(在下面的"常量"部分中都有注明)允许使用指针指定字段;其他所有常量都要求通过字段位置指定字段。
uNewSetting (Optional)
类型:__Usual
如果指定,此参数用于更改设置的值。
数据类型(以及是否可以指定 uNewSetting)取决于 kInfoType 常量,并在下面的"常量"部分中有详细说明。

返回值

类型:__Usual
如果未指定 uNewSetting,DBFieldInfo() 返回当前设置。
如果指定了 uNewSetting,则返回先前的设置。
备注
DBFieldInfo() 检索字段(列)状态的信息。 默认情况下,此函数在当前选定的工作区上操作。
可以通过在别名表达式中指定来使其在未选定的工作区上操作。
常量描述
DBS_ALIAS 返回并可选地更改一个字段可以被引用的备用名称(或别名)(默认情况下,与 DBS_NAME 相同)。 使用 uNewSetting 参数,您可以指定一个字符串,随后可以使用该字符串来访问指定的字段。
DBS_BLOB_DIRECT_LEN 以无符号长整数的形式返回 BLOB 中的数据长度,而不引用特定的备注字段。对于字符串,返回值是字符串的字节长度; 对于数组,它是第一维中的元素数;对于所有其他数据类型,它返回 -1。 使用此常量,您必须使用 BLOBDirectPut()、BLOBDirectImport() 或 FieldInfo(DBS_BLOB_POINTER, ...) 获取的数值指针来指定 BLOB。
DBS_BLOB_DIRECT_TYPE 用于确定 BLOB 数据类型,而不引用特定的备注字段。使用 DBS_BLOB_DIRECT_TYPE。使用此常量,您必须使用 BLOBDirectPut()、BLOBDirectImport() 或 FieldInfo(DBS_BLOB_POINTER, ...) 获取的数值指针来指定 BLOB。
请参阅 DBS_BLOB_TYPE 以获取可能的返回值的表。
DBS_BLOB_LEN 以无符号长整数的形式返回备注字段中的 BLOB 数据的长度。对于字符串,返回值是字符串的字节长度;对于数组,它是第一维中的元素数;对于所有其他数据类型,它返回 -1。
提示 提示:
使用 DBS_BLOB_LEN 优于检索值并使用 Len() 函数。
DBS_BLOB_POINTER返回与备注字段关联的 BLOB 数据的数值指针。
DBS_BLOB_TYPE 与在 .DBT 文件中维护的备注字段不同,BLOB 文件允许您在备注字段中存储许多不同类型的数据。然而,用于确定数据类型的标准函数,如 ValType(),简单地将 BLOB 字段视为常规备注字段。要确定备注字段中存储的实际 BLOB 数据的类型,使用 DBS_BLOB_TYPE。
返回值的数据类型是字符串,可以使用此表进行解释:
返回值含义
?空(未初始化的字段)
A数组
C字符串
D日期
E错误
L逻辑
N数值
U未定义(NIL 已存储)
DBS_DEC返回字段的小数位数。
DBS_LEN返回字段的长度。
DBS_NAME返回字段的名称。
DBS_PROPERTIES返回字段定义的属性数。
DBS_TYPE返回字段的数据类型。
DBS_USER用户定义值的开始。
提示 提示:
DBS_USER 是一个常量,返回第三方 RDD 开发人员可以用于自定义的最小值。 小于 DBS_USER 的值保留给 X# 开发。
可用的字段信息由 RDD 定义。 在 DBF 工作区模型中,这仅限于存储在 DBF 文件结构中的信息 (即名称、长度、小数位数和数据类型)以及可以在运行时更改的字段别名。 为了支持其他数据库模型(如基于字典的数据库)的 RDD,这些数据库存储了 每个字段或列的更多信息,X# RDD API 已经得到了增强。
DBFieldInfo() 和 VODBFieldInfo() 函数旨在允许 第三方 RDD 开发人员定义额外的 kInfoType 值。
示例
以下示例使用 DBFieldInfo() 检索字段信息:
X#
 1QOut(DBFieldInfo(DBS_NAME, 1))
 2// 等同于 FieldName(1)
 3FUNCTION DBOutStruct() AS ARRAY PASCAL
 4    LOCAL aStruct AS ARRAY
 5    LOCAL wFcount AS DWORD
 6    LOCAL i       AS DWORD
 7    aStruct := {}
 8    wFcount := FCount()
 9    FOR i := 1 UPTO wFcount
10        AAdd(aStruct, {FieldName(i), ;
11        DBFieldInfo(DBS_TYPE, i)  , ;
12        DBFieldInfo(DBS_LEN, i)   , ;
13        DBFieldInfo(DBS_DEC, i)}    )
14    NEXT
15    RETURN aStruct
下一个示例演示如何使用第三个参数为字段名分配别名:
X#
1FUNCTION Start()
2    USE datebook
3    DBFieldInfo(DBS_ALIAS, FieldPos("Name"), "NewName")
4    ? Name            // 显示 name 字段
5    ? NewName            // 也显示 name 字段
参见