[已解决] -同一个access库不能同时写入两个表?
RT.我同时向一个数据库中两个表写入数据.但只有前面一个表写入成功.
我用的是
rs.open sql,conn,1,3
rs.addnew
rs("bt")=request.form("bt")
rs("nr")=request.form("nr")
rs("du")=request.form("du")
rs.update
rs.close
set rs=nothing
conn.close
set conn=nothing
这样的写入方法.
但结果是,只写入了前面的一个前,而后面的一个表反回是提交成功,但没有数据写入(也没有空白).
当我把写入后面表的代码分离出来,在另一个asp文件中测试时切又可以写入了.
小弟刚学asp,请问asp同时写入两个表有什么特殊的要求吗?我打开表都是用的同一个方法和事件.
---------2008.07.06-解决------------
在各位的帮助下我肯定了adodb的操作是没有错误的.于是我将每一个关键及可能为问题的代都用response.write出来.
结果问题发现了.我上下两个表的sql语句都是用sql变量定义,因为php中,变量是随着内存变化的.而asp中在一个声明中是不变的. 困扰多天的问题终于解决了!感觉asp比php难多了.
-----------------------------
[color=Red]TO:tianyu 和hmhz版主[/color].
我重新写了一个简单的入库代码,同时都用的是一个记录集(rs),切可以同时写入两个表
我也记得在学adodb时候,官方有说明,如果是同时链接两个库的话,那么需要两个记录集和两个事件来连接.
不知道是否是二位记错了.
同时怀疑这个不能写入是其它的原因,但经验不足...
还请大家多多讨论!
-----------------------------
[[it] 本帖最后由 soarb 于 2008-6-30 23:44 编辑 [/it]]
[[it] 本帖最后由 soarb 于 2008-7-6 23:17 编辑 [/it]] 同时向两个表中写入数据,需要创建两个不同的记录集 例如:
rs1.open sql1,conn,1,3
rs1.addnew
rs1("bt")=request.form("bt")
rs1("nr")=request.form("nr")
rs1("du")=request.form("du")
rs1.update
rs1.close
set rs1=nothing
rs2.open sql2,conn,1,3
rs2.addnew
rs2("bt")=request.form("bt")
rs2("nr")=request.form("nr")
rs2("du")=request.form("du")
rs2.update
rs2.close
set rs2=nothing
conn.close
set conn=nothing 谢谢tianyu ,这是第二次你对我的帮助了.
谢谢版主hmhz.提供这么详劲的说明! 偶太菜了,问题还没解决.
请问下,如果是同时写入两个表,是不是不能用"rs"命名这个事件.而非要用rs1, rs2 这样的词? 哪位好心人,能否能一份asp同时写入access两个表的源码给小弟学习下.
今天我试了很多方法都不能用. rs 是自定义的,你也可以写成ABC啊,或者Ars 都可以的,只要两个记录集名不相同就行了 版主,我用了同一记录集,切可以写入两个不同的表,但我把此代码运行到其它代码中时确无法写入 为了不出问题,最好两个不一样,防止冲突 版主的说法是对的。或者你可以这样
rs1.open sql1,conn,1,3
rs2.open sql2,conn,1,3
rs1.addnew
rs2.addnew
rs1("bt")=request.form("bt")
rs1("nr")=request.form("nr")
rs1("du")=request.form("du")
rs2("bt")=request.form("bt")
rs2("nr")=request.form("nr")
rs2("du")=request.form("du")
rs1.update
rs1.close
rs2.update
rs2.close
set rs1=nothing
set rs2=nothing
conn.close
set conn=nothing
这样好懂一些吧/。 [quote][bo][un]dhdhzzw[/un] 在 2008-7-1 09:17 的发言:[/bo]
版主的说法是对的。或者你可以这样
rs1.open sql1,conn,1,3
rs2.open sql2,conn,1,3
rs1.addnew
rs2.addnew
rs1("bt")=request.form("bt")
rs1("nr")=request.form("nr")
rs1("du")=request.form("du") ... [/quote]
这个前面是不是还应该加入:
set rs1=Server.CreateObject("ADODB.RecordSet")
set rs2=Server.CreateObject("ADODB.RecordSet")
这两句代码呢? 是的,这两句肯定要加 Set Rs = Server.CreateObject("ADODB.RecordSet")
是创建记录集并且付值给Rs
SQL = ""
Rs.Open SQL,Conn,1,3
执行完一个表之后可以通过
Rs.Close关闭此次执行
SQL = ""
Rs.Open SQL,Conn,1,3
Rs可以继续执行第二个表的操作,Rs使用完之后
Rs.Close : Set Rs = Nothing清理Rs
Conn.Close : Set Conn = Nothing 关闭数据库连接,清理Conn 直接用INSERT不就完事了! 直接用INSERT 速度快
建议不用要记录集方式进行插入数据。。如果表中数据量大,可想打开表的时间都需要很长 终于解决了!谢谢各位的帮助
页:
[1]
