Show/Hide Toolbars

XSharp

Note该命令在头文件中定义,将由 X# 预处理器预处理为函数调用。如果禁用标准头文件 (-nostddefs),该命令将不可用。如果告诉编译器使用不同的标准头文件(-stddef ),则此命令也可能不可用。

用途

生成一个新的数据库文件,其中的字段定义取自结构扩展文件的内容。

语法

CREATE <xcTargetFile> FROM <xcSourceFile> [NEW] [ALIAS <xcAlias>] [VIA <cDriver>]

参数

<xcTargetFile>要创建的目标数据库文件的名称,包括可选的驱动器、目录和扩展名。 文件创建后,将以工作区 SetExclusive() 标志指定的模式保持打开。
 
如果 <xcTargetFile> 不存在,则将创建该文件。 如果存在,该命令将尝试以独占模式打开文件,如果成功,文件将被覆盖,不会发出警告或出错。 如果由于其他进程正在使用该文件等原因而拒绝访问,NetErr() 将被设置为 TRUE。

 

<xcSourceFile>作为新数据库文件结构定义的结构扩展文件名称,包括可选的驱动器、目录和扩展名。
 
如果 <xcSourceFile> 不存在,运行时将出错。 如果存在,该命令将尝试以共享模式打开文件,如果成功,则继续执行。 如果由于其他进程独占该文件等原因而拒绝访问,NetErr() 将被设置为 "true"。
 
有关文件搜索和创建规则,请参阅 SetDefault() 和 SetPath()。 数据库文件的默认扩展名由 RDD 决定。
 
要符合结构扩展文件的条件,数据库文件的结构必须与 COPY STRUCTURE EXTENDED 生成的结构相同,详情请参考 COPY STRUCTURE EXTENDED。
 
注意:对于数据字典应用程序,可以在结构扩展文件中增加字段来描述扩展字段属性。 例如,可以设置一些字段来描述字段属性,如描述、键标志、标签、颜色、图片和 VALID 子句的验证表达式。 CREATE FROM 仅从所需字段创建新数据库文件,而忽略扩展结构中的所有其他字段。 此外,它对必填字段的顺序也不敏感。

 

NEW在打开 <xcTargetFile> 前选择下一个未占用的工作区。 如果未指定该子句,则使用当前工作区。

 

ALIAS <xcAlias>打开 <xcTargetFile> 时与工作区相关联的标识符名称。 如果未指定该子句,别名默认为数据库文件名。 单个应用程序内不允许使用重复的别名。

 

VIA <cDriver>为工作区提供服务的 RDD 名称。 如果未指定,则使用 RDDSetDefault() 确定的默认 RDD。

备注

长度大于 255 位的字符字段:  有两种方法可以创建长度大于 255 位的字符字段:

       根据以下公式,使用 Field_Len 和 Field_Dec 字段指定字段长度:

       _FIELD->Field_Len := <nLength> % 256

       _FIELD->Field_Dec := Integer(<nLength> / 256)

 

       修改结构扩展文件的结构,将 Field_Len 的长度改为 5,然后指定实际的字段长度。

示例

本例是一个模拟交互式 CREATE 实用程序的过程:

FUNCTION Start()
 CreateDatabase("newfile")
 
FUNCTION CreateDatabase(cNewDbf)
 // 创建空的结构扩展文件
 CREATE tmpext
 USE tmpext
 lMore := TRUE
 DO WHILE lMore
         // 输入新的字段定义
         APPEND BLANK
         CLEAR
         @ 5, 0 SAY "Name.....:  " GET Field_Name
         @ 6, 0 SAY "Type.....:  " GET Field_Type
         @ 7, 0 SAY "Length...:  " GET Field_Len
         @ 8, 0 SAY "Decimals.:  " GET Field_Dec
         READ
         lMore := (!EMPTY(Field_Name))
 ENDDO
 
 // 删除所有空白记录
 DELETE ALL FOR EMPTY(Field_Name)
 PACK
 CLOSE
 
 // 创建新的数据库文件
 CREATE (cNewDbf) FROM tmpext        
 ERASE tmpext.dbf

下一个示例将在结构扩展文件中为长度为 4000 个字符的字符字段创建一个新定义:

APPEND BLANK
REPLACE Field_Name WITH "Notes",;
 Field_Type WITH "C",;
 Field_Len WITH 4000 % 256,;
 Field_Dec WITH INTEGER(4000 / 256)

程序集

XSharp.RT.DLL

参见

COPY STRUCTURE, COPY STRUCTURE EXTENDED, CREATE, DbCopyXStruct(), DbCreate(), RDDSetDefault(), SetDefault(), SetExclusive(), SetPath()