刷新字段的过程(200分)

B

beamer

Unregistered / Unconfirmed
GUEST, unregistred user!
各位:
  我想写个这样的过程:
  A、B两表的关键字段皆为BookCode,以B表中的某些指定字段刷新A表中相应的字
段。
  我想用动态数组的办法,将B表的数据读入数组,以数组内的数据刷新A表,
但两表的字段较多,执行时速度较慢,通用性较差。大家有何高见?



 
用updata table set b.字段=a.字段行不行
 
update a
set a.fieldname=b.fieldanme
from a,b
where a.bookcode=b.bookcode
 
updatesql组件不就可以拉。
 
一个语句完成工作是否可以?
还有,你说通用性较差,这是没办法的事情。要想通用性好,就需要许多动态的内容。
可是动态的内容一定会影响到运行的速度。
 
赞成使用updata
 
用STEAM操作试一试
 
按弟兄们推荐的Update 语句的办法试过,行不通!一条SQL语句或许行不通。。。。
 
SQL> select * from t_old;

ID NAME
-------- --------
001 Name1Old
002 Name2Old
003 Name3Old

SQL> select * from t_new;

ID NAME
-------- --------
001 Name1
002 Name2

SQL> update t_old o set o.name=nvl((select n.name from t_new n where n.id=o.id),o.name);
SQL> commit;
SQL> select * from t_old;

ID NAME
-------- --------
001 Name1
002 Name2
003 Name3Old
 
To Pivotsoft:
我的运行环境是D5+Access97,数据控件采用ADO。老兄的办法试过不行。。。。。
 
很简单一句话
if exists (select * from sysobjects
where id = object_id('dbo.aaa'))
drop table dbo.aaa
go

create table aaa(
pid int primary key,
tmpfield varchar(10)
)
go

if exists (select * from sysobjects
where id = object_id('dbo.bbb'))
drop table dbo.bbb
go

create table bbb(
pid int primary key,
tmpfield varchar(10)
)
go

insert aaa(pid, tmpfield) values(1,'sdga')
insert aaa(pid, tmpfield) values(2,'sd')
insert aaa(pid, tmpfield) values(3,'dgga')
insert aaa(pid, tmpfield) values(4,'sjja')
insert aaa(pid, tmpfield) values(5,'gha')
go
insert bbb(pid, tmpfield) values(1,'ok1')
insert bbb(pid, tmpfield) values(2,'ok2')
insert bbb(pid, tmpfield) values(3,'ok3')
insert bbb(pid, tmpfield) values(4,'ok4')
insert bbb(pid, tmpfield) values(5,'ok5')
go

select * from aaa
select * from bbb
go

update aaa set aaa.tmpfield=bbb.tmpfield from aaa, bbb where aaa.pid=bbb.pid
go

select * from aaa
select * from bbb
go
 
update (a inner join b on a.id=b.id) set a.f1=b.f1, a.f2=b.f2, ...
where b.markfield=youcondition
 
多人接受答案了。
 

Similar threads

回复
0
查看
920
不得闲
S
回复
0
查看
987
SUNSTONE的Delphi笔记
S
S
回复
0
查看
805
SUNSTONE的Delphi笔记
S
顶部