利用asp 完成同一数据库中不同的2个表同步跟新数据

来源:百度知道 编辑:UC知道 时间:2024/06/13 22:25:02
利用asp 完成同一数据库中不同的2个表同步跟新数据。比如现在又表一 和表二。这2个表中都有 userid 和password 这2个字段,我现在想用表一的password字段的值 更新表二的password字段的值。
我写了段代码 但是运行后没有任何反应 请大家帮忙看看 是什么原因:
dim conn,connstr,rs1,rs2,sql1,sql2
set conn=server.createobject("adodb.Connection")
connstr="provider=Microsoft.Jet.OLEDB.4.0;data source="&Server.MapPath("data.mdb")&";"
conn.Open connstr

set rs1 = Server.CreateObject("adodb.recordset")
sql1 ="select users.userid,users.password from users,user1 where users.userid not in (select userid from user1) and users.password<>user1.password"
rs1.open sql1,conn,1,1

set rs2 = Server.CreateObject("adodb.recordset")
sql2="select * from user1 "
rs2.open sql2,conn,1,3

do while not rs1.eof
rs2("password")=rs1("password")
rs2.update
rs1.movenext
loop

谢谢了!

注意这一行:rs2("password")=rs1("password")
你先打开一个数据集rs1,之后并没有关闭接着打开另一个数据集rs2,这种情况是不允许的,ado操作数据库时一次只对一个数据集进行操作,所以我们时常要记住进行完一次操作后及时关闭数据集,使用以下语句:
rs.close
set rs=nothing
conn.close
set conn=nothing
//这里的rs,conn要根据你的程序来定,比如在你的上述程序中就应该是rs2,conn
你上述程序的主要问题正在于:试图在一次数据集中取另一次数据集中的值。
可以这样改,只开一次数据集rs,
思路是:
假设有两个表,表1名 A 字段名 userid,password
表2名 B 字段名 userid,password
update B,A set B.password=A.password where B.userid=A.userid //这一句可能与你的实际问题不符,意思是改密码,但是是改两表中userid相同的记录的B表中的密码。

根据你描述的问题,建议使用触发器来实现更好,触发器的功能是,对A表中的记录(password)进行操作的同时会触发B表中的相应字段值一起发生改变。

set rs=server.createobject("adodb.Connection")
sql="select * from user where 条件"
rs.open sql,conn,1,1
pass=rs("password")
id=rs("userid")
rs.close
sql="select * from user1 where userid='"id
rs.open sql,conn,1,3
rs(&quo