append from 如何用??

wzq3064385 2004-09-15 06:48:42

用append from 这个命令从一个表里向另一个表里添加数据怎么第二次添加是从第一次添加的末记录开始了呀!
如:从表2中向表1添加两个字段数据,再从表3中向表1中添加一个字段的数据怎么不是从首记录开始加而是从末记录开始怎么回事,如第一次添加是1--50第二次加是从50往后加了。怎样可以解次。

用replace all 字段1 with 字段1+“12345”怎么加不上用减号能加,可又怎么把加上了“1234”去掉呢?

谢谢!!
...全文
1951 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
dfwxj 2004-09-18
  • 打赏
  • 举报
回复
apple_8180(十豆三) ( ) 信誉:97 2004-09-16 13:37:00 得分: 0


楼主的意思是去掉“12345”,只是少打一个“5”

dfwxj(清风) 你用的strt()
是strtran()
还是strtofile

应该是:
replace all 字段1 with strtran(字段1,"1234","")

******************************************************

表面上看你是一个严谨的人,但严谨不是让你吹毛求疵。

strtran()这个函数早在FOXPRO FOR OOS 版本中就有了,FOX命令支持四字缩写(现在只有象我这种菜鸟喜欢缩写,没办法,懒嘛~~),strtofile()是VFP6.0才新增的将字符串转换为文件的函数,你说STRT()应该是指哪个函数?命令格式应该向前兼容还是向后兼容?况且你看看所带的参数也应该明白啊

message()函数你不陌生吧?那messagebox()呢?这两个函数的缩写又应该是什么样呢?查查工具书,看我说得对不对,message()函数的缩写为“mess()”,messagebox()的最短缩写为“messageb()”
dfwxj 2004-09-18
  • 打赏
  • 举报
回复
怎么?接受不了?

不喜欢我这种口气没关系,别理我就行了

发贴子骂我的人多了,都是因为心理承受力太差所致,我想你不会这样做的~~~

事实上对每个贴子、每个回复,应该先分析一下再作评述(酒喝多了的时候除外~~)

不好意思,不想跟你闹矛盾,你能受就受,不能受就别来看这贴了~~~
十豆三 2004-09-18
  • 打赏
  • 举报
回复
to: dfwxj(清风) ( ) 信誉:38

首先,对清风的教导,我接受,但不要以为自已在这个社区有一个星,就有一种教训人的口气,还记得有人发帖子骂你的吧,不是我一个人对您的口气不太适应,好像很多。

现有人发帖推荐新版主,其时我认为,你的VFP实力有资格当,但单凭VFP的一个星,又能代表你人是一个星吗?
dfwxj 2004-09-17
  • 打赏
  • 举报
回复
记着一点:APPE命令永远是添加,后面指定的字段列表只是指定只添加哪几个字段罢了

如:表A1和A2的结构是:F1、F2、F3、F4,表A1有一条记录如下:

F1 F2 F3 F4

A B C D

执行如下命令:
use a2
appe from a1
appe from a1 fiel f1
appe from a1 fiel f2
appe from a1 fiel f3
brow

这时候应该显示4条记录:

F1 F2 F3 F4

A B C D
A
B
C

试试吧~~~
yestoyes 2004-09-16
  • 打赏
  • 举报
回复
看了楼上的回复,我已没有话了,你就结贴吧
十豆三 2004-09-16
  • 打赏
  • 举报
回复
不能用append from ,可用replace

1、replace all 字段1 with alltrim(字段1)+"12345" &&替换

2、replace all 字段1 with substr(alltrim(字段1),1,len(alltrim(字段1))-5) &&去掉12345

注:我看了你的短消息,我给你回复了。里边有详细的解释。
我发给的帮助:你通过“搜索”写入replace便可找到相应的使用说明。
YuyuanJian 2004-09-16
  • 打赏
  • 举报
回复
用replace all 字段1 with 字段1+“12345”怎么加不上用减号能加,可又怎么把加上了“1234”去掉呢?
是因为减号可以去掉后面的空格,所以能加,因加号也可以
replace all 字段1 with Rtrim(字段1)+“12345”&&Rtrim(字段1)是去掉原字段1右边的空格

Hewiit 2004-09-16
  • 打赏
  • 举报
回复
append from 命令

从一个文件中读入记录,追加到当前表的尾部。

语法

APPEND FROM FileName | ?
[FIELDS FieldList]
[FOR lExpression]
[[TYPE] [DELIMITED [WITH Delimiter | WITH BLANK | WITH TAB
| WITH CHARACTER Delimiter]
| DIF | FW2 | MOD | PDOX | RPD | SDF | SYLK
| WK1 | WK3 | WKS | WR1 | WRK | CVS
| XLS | XL5 [SHEET cSheetName] | XL8 [SHEET cSheetName]]]
[AS nCodePage]

参数描述

FileName

指定从哪个文件中读入记录。如果给出的文件名不包含扩展名,则将文件默认为 Visual FoxPro 表,扩展名为 .DBF。如果文件是 Visual FoxPro 表,无论SET DELETED 为何种设置,表中标记为删除的记录也将添加到当前表中。

?

显示打开对话框,从中可以选择从哪个表中读入记录。

FIELDS FieldList

指定添加哪些字段数据。

FOR lExpression

为当前选定表中每一条 lExpression 为“真”(.T.) 的记录追加新记录,直至达到当前选定表的末尾。如果省略 FOR,则整个源文件记录都追加到当前表中。

TYPE

指定源文件类型。如果指定的源文件类型不是 Visual FoxPro 表,则必须指定文件类型,但不必包括 TYPE 关键字。您可以从各种类型文件(包括分隔 ASCII 文本文件)中读入信息添加到表中,在这些文件中可以指定字段分隔符。

如果要追加的源文件扩展名不是默认的扩展名,源文件名必须包括文件扩展名。例如,Microsoft Excel 工作表通常具有 .XLS 扩展名。如果要追加的 Microsoft Excel 工作表扩展名不是 .XLS,一定要指定扩展名。

注意 如果要追加的记录来自工作表,工作表中的数据必须以主行序而非主列序存储,这样才能使追加的工作表数据符合表结构。

DELIMITED

指定源文件为分隔数据文件。分隔数据文件是 ASCII 文本文件,文件中每条记录以回车和换行符结尾。各字段内容默认地由逗号分开,字符字段值还需要用引号括上。例如:

"Smith",9999999,"TELEPHONE"

所有分隔数据文件的扩展名默认为 .TXT 数据的格式。

如果日期格式正确,可以从分隔文件中导入日期数据,日期的默认格式为 mm/dd/yy。您还可以选择加入世纪信息。Visual FoxPro 导入的数据(如 12/25/95)不包含世纪信息,世纪信息的默认值为 20 世纪。日期分隔符可以为任意非数值字符,但不能使用分隔文件中字段的分隔符。

如果其他一些日期格式与 SET DATE 中可以使用的格式相匹配,Visual FoxPro 也可以导入这些格式的日期数据。若要导入非默认格式的日期,应在使用 APPEND FROM 前先发出 SET DATE 修改数据格式设置。要想检查日期格式是否能成功地导入,可使用CTOD()函数。如果 CTOD()函数接收此日期值,则日期数据就能正确地导入。

DELIMITED WITH Delimiter

字符字段由 Delimiter 标识,而非引号。

DELIMITED WITH BLANK

由空格符 (BLANK) 分隔字段,而不是用逗号分隔字段。

DELIMITED WITH TAB

各字段由制表符 (TAB) 来分隔,而非逗号。

DELIMITED WITH CHARACTER Delimiter

字段之间由给定的 Delimiter 分隔。如果 Delimite 是分号,应用引号括起来,因为引号在 Visual FoxPro 中有特殊的意义:一个命令分在多行中书写时,用分号作为行的结束。Delimiter 可以是 BLANK 或 TAB 。

WITH Delimiter 子句可与 WITH CHARACTER 子句同时使用。例如,在下面的例子中,添加记录的来源是一个文本文件。该文本文件中,字符字段用下划线 _ 标识,而字段之间用星号 * 分割:

APPEND FROM mytxt.txt DELIMITED WITH _ ;
WITH CHARACTER *

DIF

选用 DIF 可从 VisiCalc .dif(数据交换格式)文件中导入数据。矢量(列)对应当前选定表的字段,元组(行)对应表的记录。DIF 文件的默认扩展名为 .DIF。

FW2

选用 FW2 可从由 Framework II 创建的文件中导入数据。FW2 文件的默认扩展名为 .FW2。

MOD

选用 MOD 可从Microsoft Multiplan 4.01 版本的文件中导入数据。MOD 文件由 Microsoft Multiplan 4.01 版本创建,默认扩展名为 .MOD。

PDOX

选用 PDOX 可从 Paradox 3.5 版或 4.0 版数据库文件中导入数据。Paradox 文件名的默认扩展名为 .DB。

RPD

选用 RPD 可从由 RapidFile 1.2 版本创建的文件中导入数据。RapidFile 文件名的默认扩展名为 .RPD。

SDF

选用 SDF 可从系统数据格式文件中导入数据。SDF 文件是一种 ASCII 文本文件,记录有固定长度,并且以回车和换行符结尾,各字段不分隔开。文件的默认扩展名为 .TXT。

SYLK

选用 SYLK 可从 SYLK(符号链接)交换格式文件中导入数据。SYLK 文件用于 Microsoft MultiPlan 中。SYLK 文件中的列对应 Visual FoxPro 表的字段,行对应表的记录。SYLK 文件没有扩展名。

WK1

选用 WK1 可从 Lotus 1-2-3 2.x 版本的电子表格中导入数据。电子表格的每列为表的一个字段,每行为表的一条记录。Lotus 1-2-3 2.x 版本创建的电子表格扩展名为 WK1。

WK3

选用 WK3 可从 Lotus1-2-3 的电子表格中导入数据,电子表格的每列为表的一个字段,每行为表的一条记录。Lotus1-2-3 版本 3.X 创建的电子表格扩展名为 .WK3。

WKS

选用 WKS 可从 Lotus1-2-3 1-A 版的电子表格中导入数据。电子表格的每列为表的一个字段,每行为表的一条记录。Lotus1-2-3 1-A 版本创建的文件扩展名为 .WKS。

WR1

选用 WR1 可从 Lotus Symphony 1.1 或 1.2 版的电子表格中导入数据。电子表格的每列为表的一个字段,每行为表的一条记录。Symphony1.1 或 1.2 版创建的电子表格扩展名为 .WR1。

WRK

选用 WRK 可从 Lotus Symphony 1.0 版的电子表格中导入数据。电子表格中的每列为表的一个字段,每行为表的一条记录。Symphony 1.0 版创建的电子表格扩展名为 .WRK。

CVS

选用 CVS 可从一个各值用逗号分隔的文件中导入数据。一个 CSV 文件的第一行是字段名;当导入该文件时,会忽略这个字段名。

XLS

选用 XLS 可从 Microsoft Excel 工作表中导入数据。工作表的每列为表的一个字段,每行为表的一条记录。由 Microsoft Excel 创建的工作表扩展名为 .XLS。

XL5

选用 XL5 可从 Microsoft Excel 5.0 版中导入数据。工作表的每列为表的一个字段,每行为表的一条记录。工作表文件的扩展名为 .XLS。

如果省略 SHEET 子句,会导入 Sheet1 中的数据。为了导入特定工作表中的数据,需要包含 SHEET 关键字,并且使用 cSheetName 指定工作表的名称。

XL8

包含 XL8 快导入 Microsoft Excel 97 的数据。工作表的列变成表中的字段;工作表的行变成表中的记录。在 Microsoft Excel 中创建的工作表文件的扩展名是 .xls。

如果省略 SHEET 子句,会导入 Sheet1 中的数据。为了导入特定工作表中的数据,需要包含 SHEET 关键字,并且使用 cSheetName 指定工作表的名称。

AS nCodePage

指定源表或源文件的代码页。Visual FoxPro 将复制源表或源文件的内容,并在复制时自动把数据转换到当前表的代码页中。

如果指定的 nCodePage 值无法使用,Visual FoxPro 将产生一条错误信息。您可以用GETCP()函数显示代码页对话框,在对话框中可以为追加的表或文件指定代码页。如果省略 AS nCodePage 子句,并且 Visual FoxPro 不能判定源表或文件的代码页,Visual FoxPro 将复制源表或文件内容,并在复制数据的过程中,自动将数据转换到当前的 Visual FoxPro 代码页中。如果 SET CPDIALOG 为 ON,当前选定工作区中的表以代码页标记。如果要从没有代码页标记的表中读入数据并添加到表中时,将显示代码页对话框,您可以在其中选择表的代码页。当前的 Visual FoxPro 代码页可以由CPCURRENT()函数设定。

如果省略 AS nCodePage 子句,并且 Visual FoxPro 可以确定追加记录的表或文件的代码页,Visual FoxPro 将复制表或文件的内容,并在复制数据的过程中,自动将数据转换到当前选定表的代码页中。

如果 nCodePage 为零,Visual FoxPro 认为需追加记录的表和文件的代码页与当前选定表的代码页相同,并且不进行代码页的转换。

说明

如果从其中追加数据的文件是 Visual FoxPro 表或在 FoxPro 早期版本中创建的表,其扩展名为 .DBF。如果其扩展名不是 .DBF,您必须指定扩展名。如果文件不是 VisualFoxPro 表或 FoxPro 早期版本创建的表,还必须指定文件的类型。

在从 DBASE IV 或 DBASE V 创建的包含备注字段的表中追加记录前,您必须先用USE 命令在 Visual FoxPro 中打开此表,当提示信息询问您是否要转换文件时,请选择“是”。

如果从 FoxPro 早期版本的表或 Visual FoxPro 表中读入记录,此表可以在另一工作区打开。对于源表中有删除标记的记录,一旦添加到表中,将会去掉删除标记。

使用 DBF( )函数可以从一个只读的临时表追加数据,该临时表是使用 SELECT - SQL命令创建的。可象下例这样在 DBF()函数中包含临时表的名称∶

APPEND FROM DBF('<Cursor Name>’)

十豆三 2004-09-16
  • 打赏
  • 举报
回复
比如:
新空表的字段有dm1,dm2,dm3
表1的字段有dm1,dm2
表2的字段有dm3

select 1
use 新空表
append from 表1
go 1
select 2
use 表2
do while not eof()
REPLACE 新空表.dm3 WITH dm3
skip
sele 1
skip
sele 2
enddo
sele 1
brow
十豆三 2004-09-16
  • 打赏
  • 举报
回复
你要把空表和表1,表2的字段说明下。
wzq3064385 2004-09-16
  • 打赏
  • 举报
回复
非常感谢大家的热心帮助,好像大家第一个问题还没有弄明白我的意思。

新建一个空表
第一次从表一:append from d:\表1 fields 所要字段
第二次从表二:append from e:\表2 fields 所要字段
大家可以试试,就知道问题了,说我也说不清。
十豆三 2004-09-16
  • 打赏
  • 举报
回复
楼主的意思是去掉“12345”,只是少打一个“5”

dfwxj(清风) 你用的strt()
是strtran()
还是strtofile

应该是:
replace all 字段1 with strtran(字段1,"1234","")
dfwxj 2004-09-16
  • 打赏
  • 举报
回复
别着急,我还有话要说

append from 和replace是两个截然不同的命令,前者是向当前表的尾部添加记录,改变表的记录数;后者是对当前记录的字段值进行替换,不改变表的记录数

“用replace all 字段1 with 字段1+“12345”怎么加不上用减号能加,”YuyuanJian(渝源)说得对

“可又怎么把加上了“1234”去掉呢?”
apple_8180(十豆三)的回复是错的,而且方法烦了点。
楼主是要去掉“1234”,是4个字符,而apple_8180(十豆三)的代码给去掉了5个字符,如果这是一条高考题的话,那得分是0


如果你的字段里除了刚才添加的以外,不包含“1234”,有一个简单的命令可以解决:

replace all 字段1 with strt(字段1,'1234','')


2,749

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧