Show/Hide Toolbars

XSharp

Navigation: X# 文档 > X# 语言参考 > 命令和语句 > 数据库

APPEND FROM Command (non FoxPro)

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

Purpose

从数据库或文本文件导入记录。

Syntax

APPEND FROM <xcSourceFile> [FIELDS <idFieldList>]
[<Scope>] [WHILE <lCondition>] [FOR <lCondition>]
[SDF] | [DELIMITED [WITH <xcDelimiter> | BLANK]] |
[VIA <cDriver>] [INHERIT FROM <acRDDs>]

Arguments

FROM <xcSourceFile>添加记录的源文件名称,包括可选的驱动器、目录和扩展名。 有关文件搜索和创建规则,请参阅 SetDefault() 和 SetPath()。 数据库文件的默认扩展名由 RDD 决定。 文本文件的默认扩展名是 .TXT。
该命令尝试以共享模式打开 <xcSourceFile>。 如果文件不存在,则会出现运行时错误。 如果文件成功打开,则继续执行操作。 如果由于其他进程独占该文件等原因而拒绝访问,NetErr() 将被设置为 “true”。  

 

FIELDS <idFieldList>要从 <xcSourceFile> 追加的字段列表。 默认为所有字段。
只有两个文件中名称和类型相同的字段才会被附加。 如果相同名称的字段在数据类型上不匹配,则会出现运行时错误。

 

<Scope>当前数据库文件中要处理的部分。 默认为所有可见记录。范围可以是以下一个或多个子句:
[NEXT <NEXT>]        可选择指定从源文件第一条记录开始处理的记录数。这将从源文件的第一条记录开始。
[RECORD <rec>]        可选的记录 ID 如果指定,处理将从源文件中的该数据记录开始。
[<rest:REST>]                选项 REST 可指定是否从当前记录到最后一条记录按顺序搜索。如果指定了条件,则选项 ALL 为默认值。
[ALL]                选项 ALL 指定导入源文件中的所有记录。这是默认设置。
WHILE <lCondition>范围内每条可见记录都必须满足的条件,从当前记录开始。 一旦 while 条件失败,进程就会终止。 如果没有指定 <Scope>,while 条件会将默认范围改为文件中的其他可见记录。

 

FOR <lCondition>处理范围内每条可见记录必须满足的条件。 如果某条记录不符合指定条件,则会被忽略,并处理下一条可见记录。 如果没有指定 <Scope> 或 WHILE 子句,则 for 条件会将默认范围改为所有可见记录。

 

SDF系统数据格式文件,格式规格如下表所示。 记录和字段为固定长度。.

 

内容格式
Character 字段填充尾部空白        
Date 字段yyyymmdd        
Logical 字段T 或 F        
Memo 字段忽略        
Numeric 字段用前导空格或 0 填充        
字段分隔符        
记录分隔符回车/换行        
文件结束标记1A hex 或 Chr(26)        

 

DELIMITED [WITH <xcDelimiter>]
字符字段用双引号(默认分隔符)或指定的 <xcDelimiter> 括起来的文本文件。 字段和记录的长度可变,格式规范如下表所示:

 

 

内容格式        
Character 字段可以分隔,并截去尾部的空白        
Date 字段yyyymmdd        
Logical 字段T 或 F        
Memo 字段忽略        
Numeric 字段可以截去前导零        
字段分隔符(英文)逗号        
记录分隔符回车/换行        
文件结束标记1A hex 或 Chr(26)        

注意:分隔符不是必需的,APPEND FROM 可以正确处理没有分隔符的字符字段。

 

DELIMITED WITH BLANK
文本文件,其中字段之间用一个空格隔开,字符字段不括入分隔符。 格式规范如下表所示:

 

内容格式
Character 字段不分隔,可截断尾部空白        
Date 字段yyyymmdd        
Logical 字段T 或 F        
Memo字段忽略        
Numeric 字段可以截去前导零        
字段分隔符单个空格        
记录分隔符回车/换行        
文件结束标记1A hex 或 Chr(26)        

警告:如果在 APPEND FROM 命令行中指定了 DELIMITED WITH 子句,它必须是最后指定的子句。

 

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

 

INHERIT FROM <acRDDs>
包含 RDD 名称的一维数组,主 RDD 从这些 RDD 继承特殊功能。 这样,您就可以在不同的工作区和不同的数据库驱动程序中使用具有特殊功能(如加密或解密)的 RDD。 这些 RDD 将覆盖主 RDD(使用 VIA 子句指定)的特殊功能。 如果多个 RDD(使用 INHERIT FROM 子句指定)实现了相同的功能,则与列表中最后一个 RDD 相关的功能优先。

备注

已删除记录:  如果 SetDeleted() 为 FALSE,<xcSourceFile> 中已删除的记录将附加到当前数据库文件并保留其已删除状态。 但如果 SetDeleted() 为 TRUE,删除的记录将不可见,因此不会被处理。

 

字段宽度不匹配:  如果当前数据库文件中的字段为字符类型,且字段长度大于输入的 <xcSourceFile> 数据,则 APPEND FROM 会在源数据中填充空白。 如果当前字段是字符数据类型,且其字段长度小于输入的源数据,则会截断源数据以适应其长度。 如果当前字段是数字类型,而输入源数据的位数多于当前字段的长度,则会出现运行时错误。

示例

本例使用字段列表和条件演示了 APPEND FROM 命令:

USE sales NEW
APPEND FROM branchfile FIELDS Branch, Salesman, Amount FOR Branch = 100

下一个示例演示了如何指定 <Scope> 从另一个数据库文件导入特定记录:

APPEND RECORD 5 FROM temp

程序集

XSharp.RT.DLL

参见

COPY TO, DbApp(), DbAppDelim(), DbAppSDF(), RDDSetDefault(), SetDefault(), SetPath(), SetDeleted()