Functions.DbFieldInfo 方法 | |
返回并可选择性地更改字段信息。
命名空间:
XSharp.RT
程序集:
XSharp.RT (在 XSharp.RT.dll 中) 版本:2.22 GA
语法 FUNCTION DbFieldInfo(
kInfoType,
nFieldPos,
uNewSetting
) AS USUAL CLIPPER
[ClipperCallingConventionAttribute(new string[] { ... })]
public static __Usual DbFieldInfo(
__Usual kInfoType = default,
__Usual nFieldPos = default,
__Usual uNewSetting = default
)
查看代码参数
- 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() 检索字段信息:
1QOut(DBFieldInfo(DBS_NAME, 1))
2
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
下一个示例演示如何使用第三个参数为字段名分配别名:
1FUNCTION Start()
2 USE datebook
3 DBFieldInfo(DBS_ALIAS, FieldPos("Name"), "NewName")
4 ? Name
5 ? NewName
参见