VF6.0表中用什么命令实现将一个表中的字段值赋值给另一个表
1、现有两张表,一个是表A,一个是表B,我想将表A中的1字段的值赋给表B中2字段使表A中1字段与表B2字段值相等(这两张表是在同一文件夹中).特别说明下,以上1和2字段的...
1、现有两张表,一个是表A,一个是表B,我想将表A中的1字段的值赋给表B中2字段使表A中1字段与表B2字段值相等(这两张表是在同一文件夹中).
特别说明下,以上1和2字段的值是日期
2、同样是上面两张表有相同字段3且值一样,我想查询,表A中1字段为空的,在表B中显示表B2字段有多少
谢谢,不好意思,我没说清楚,问题1中,表B少于表A,且两个表有一个相同字段3,我想在表A中找出有多少个和表B一样的字段3的值且为这些一样的在表B中将表A中的1字段的值赋给表B中2字段
谢谢大家帮帮忙吧 展开
特别说明下,以上1和2字段的值是日期
2、同样是上面两张表有相同字段3且值一样,我想查询,表A中1字段为空的,在表B中显示表B2字段有多少
谢谢,不好意思,我没说清楚,问题1中,表B少于表A,且两个表有一个相同字段3,我想在表A中找出有多少个和表B一样的字段3的值且为这些一样的在表B中将表A中的1字段的值赋给表B中2字段
谢谢大家帮帮忙吧 展开
2个回答
展开全部
1.
CLOSE TABLE ALL
USE E:\TEMP\表B ALIAS 表B IN 0
SELECT 0
USE E:\TEMP\表A ALIAS 表A
SCAN
SELECT 表B
REPL 字段2 WITH 表A.字段1
SKIP
SELECT 表A
ENDSCAN
以上代码即可将表A的字段1的值赋给表B字段2.条件是表B表的记录数不少于表A的记录数
2.
CLOSE TABLE ALL
SELECT 0
USE E:\TEMP\表B ALIAS 表B EXCL
INDEX ON 字段3 TAG 字段3
SELECT 0
USE E:\TEMP\表A ALIAS 表A
SET RELATION TO 字段3 INTO 表B
BROW FIELDS 字段3 FOR EMPTY(字段1) NOWAIT
SELECT 表B
BROW FIELDS 字段3,字段2 NOWAIT
SELECT 表A
此时你用光标键在表A中移动记录,同时可以看到表B的浏览窗口中字段3值与表A字段3值相同的对应的记录
附:表的结构及数据
表A 的结构:
字段1 D 8
字段3 C 20
记录:
字段1 字段3
2008.01.01 001
2008.02.06 002
. . 003
2008.03.05 004
2008.03.15 005
. . 006
2008.08.08 007
表B 的结构:
字段2 D 8
字段3 C 20
记录:
字段2 字段3
. . 001
2008.05.30 003
. . 004
. . 006
2008.12.08 007
补充回答:
这个问题并不难!
CLOSE TABLE ALL
SELECT 0 &&在可用空闲数据区打开表A
USE E:\TEMP\表A ALIAS 表A EXCL &&独享打开表A,目的是要对其建立索引
INDEX ON 字段3 TAG 字段3 &&对字段3建立索引,索引名就叫'字段3'
SELECT 0 &&在可用空闲数据区打开表B
USE E:\TEMP\表B ALIAS 表B &&表B可以不需索引,因此可共享打开
SET RELATION TO 字段3 INTO 表A &&建立表B与表A的以字段3为关键字段的关系
REPL 表B.字段2 WITH 表A.字段1 FOR 表B.字段3 = 表A.字段3 AND !EMPTY(表A.字段1) &&用表A的字段1去置换表B的字段2,条件是两个表的字段3相同并且表A的字段1不为空
? _TALLY &&这个内存变量表示刚刚进行了多少条记录的操作.也就是有多少条记录的表A.字段3 = 表B.字段3并且表A.字段1不为空
显示结果:
SELECT 表A.字段3, 表A.字段1, 表B.字段3, 表B.字段2 ;
FROM 表A INNER JOIN 表B ;
ON 表A.字段3 = 表B.字段3
注:根据提问人的要求,已将表B的记录减少,并使字段2的内容为空.这样就不需要前面的第1点的回答了.你可以将代码拷贝到VFP6.0中执行.表A,表B都位于E:\TEMP文件夹内.请注意按实际修改路径.
CLOSE TABLE ALL
USE E:\TEMP\表B ALIAS 表B IN 0
SELECT 0
USE E:\TEMP\表A ALIAS 表A
SCAN
SELECT 表B
REPL 字段2 WITH 表A.字段1
SKIP
SELECT 表A
ENDSCAN
以上代码即可将表A的字段1的值赋给表B字段2.条件是表B表的记录数不少于表A的记录数
2.
CLOSE TABLE ALL
SELECT 0
USE E:\TEMP\表B ALIAS 表B EXCL
INDEX ON 字段3 TAG 字段3
SELECT 0
USE E:\TEMP\表A ALIAS 表A
SET RELATION TO 字段3 INTO 表B
BROW FIELDS 字段3 FOR EMPTY(字段1) NOWAIT
SELECT 表B
BROW FIELDS 字段3,字段2 NOWAIT
SELECT 表A
此时你用光标键在表A中移动记录,同时可以看到表B的浏览窗口中字段3值与表A字段3值相同的对应的记录
附:表的结构及数据
表A 的结构:
字段1 D 8
字段3 C 20
记录:
字段1 字段3
2008.01.01 001
2008.02.06 002
. . 003
2008.03.05 004
2008.03.15 005
. . 006
2008.08.08 007
表B 的结构:
字段2 D 8
字段3 C 20
记录:
字段2 字段3
. . 001
2008.05.30 003
. . 004
. . 006
2008.12.08 007
补充回答:
这个问题并不难!
CLOSE TABLE ALL
SELECT 0 &&在可用空闲数据区打开表A
USE E:\TEMP\表A ALIAS 表A EXCL &&独享打开表A,目的是要对其建立索引
INDEX ON 字段3 TAG 字段3 &&对字段3建立索引,索引名就叫'字段3'
SELECT 0 &&在可用空闲数据区打开表B
USE E:\TEMP\表B ALIAS 表B &&表B可以不需索引,因此可共享打开
SET RELATION TO 字段3 INTO 表A &&建立表B与表A的以字段3为关键字段的关系
REPL 表B.字段2 WITH 表A.字段1 FOR 表B.字段3 = 表A.字段3 AND !EMPTY(表A.字段1) &&用表A的字段1去置换表B的字段2,条件是两个表的字段3相同并且表A的字段1不为空
? _TALLY &&这个内存变量表示刚刚进行了多少条记录的操作.也就是有多少条记录的表A.字段3 = 表B.字段3并且表A.字段1不为空
显示结果:
SELECT 表A.字段3, 表A.字段1, 表B.字段3, 表B.字段2 ;
FROM 表A INNER JOIN 表B ;
ON 表A.字段3 = 表B.字段3
注:根据提问人的要求,已将表B的记录减少,并使字段2的内容为空.这样就不需要前面的第1点的回答了.你可以将代码拷贝到VFP6.0中执行.表A,表B都位于E:\TEMP文件夹内.请注意按实际修改路径.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询