怎样将新插入的数据的id写入另一个表解决办法

怎样将新插入的数据的id写入另一个表【简述】table1结构:id计划内容完成节点是否完成1出图2012-4-30否2技术

怎样将新插入的数据的id写入另一个表
【简述】
table1结构:
id 计划内容 完成节点 是否完成
1 出图 2012-4-30 否
2 技术单 2012-4-30 否

table2结构:
id f_id 计划内容 完成节点 是否完成
1 1 1-1号图 2012-4-18 否
2 1 1-2号图 2012-4-20 否
3 2 1-1技术单 2012-4-15 否

table1是一级计划,table2是二级计划,id是自动编号的
table1.id=table2.f_id
页面上显示:每一条一级计划下面是与它相关的二级计划

【功能描述】
现在有一个功能是任务的结转功能,就是当任务到节点时还没完成,就将此条任务的完成节点多加一个月,但是在数据库中还要保存原来的这条数据,就是说,当任务结转时,数据库里有两条相同的任务,只不过一条完成节点是2012-4-30,还有一条是2012-5-30。

【问题描述】
现在的问题是:当一级计划结转了后,二级计划也要跟着结转。
但是,我现在的做法不能使二级计划跟着结转。下面是我写的代码:

VBScript code
lid=request("id")   sql="insert into table1(计划内容,完成节点,是否完成) select 计划内容,完成节点,是否完成 from table1 where id=cint('"&lid&"')"    '复制一条记录到数据库里set rs=server.createobject("adodb.recordset")rs.open sql,connstr,1,3rs("完成节点")=time1rs.updatenewid=rs("id")  '得到复制记录的id(不知道是不是这样获得)rs.closesql1="insert into table2(f_id,计划内容,完成节点,是否完成) select f_id,计划内容,完成节点,是否完成 from table2 where f_id=cint('"&lid&"')"    set rs1=server.createobject("adodb.recordset")rs1.open sql1,connstr,1,3rs1("f_id")=newidrs1("完成节点")=time2rs1.updaters1.close


用上面的表做例子:
问题1:当table1中的一级计划结转后,不能生成table2中的结果

table1:
id 计划内容 完成节点 是否完成
1 出图 2012-4-30 否
2 技术单 2012-4-30 否
3 出图 2012-5-30 否

table2
id f_id 计划内容 完成节点 是否完成
1 1 1-1号图 2012-4-18 否
2 1 1-2号图 2012-4-20 否
3 2 1-1技术单 2012-4-15 否
4 3 1-1号图 2012-5-18 否
5 3 1-2号图 2012-5-20 否

问题2:如果一条一级计划下面有很多条二级计划,应该怎么办?

[解决办法]
楼主,你的业务表模式合理与否我不评价了,
你现在就是想把主表中的一条记录另插入为一行新记录,同时把相关的子表记录也一起复制过去对吧?
这很简单,直接写在sql 语句里就行了,两条语句建议写成存储过程

 
SQL code
create proc addnewfromold@oldid intasbegin    insert into table1(col1,col2)     select col1,col2 from table1 where id=@oldid        declare @newid int    set @newid=@@identity    insert into table2(f_id,col3,col4)    select @newid,col3,col4 from tabl2 where f_id=@oldid end
[解决办法]
VBScript code
<%lid = Trim(request("id"))Set conn = CreateObject("ADODB.Connection")conn.Open connstrsql = "select 计划内容,完成节点,是否完成 from table1 where id=" & lidSet rs = CreateObject("ADODB.RecordSet")rs.cursorLocation = 3rs.open sql,conn,1,1Set rs.activeConnection = NothingIf Not (rs.EOF And rs.BOF) Then   plan = Trim(rs("计划内容").Value)   time1 = DateAdd("m", 1, CDate(rs("完成节点").Value))   over = rs("是否完成").ValueEnd Ifrs.closeSet rs = Nothingsql = "SELECT * FROM table1 WHERE 1=0"Set rs = CreateObject("ADODB.RecordSet")rs.cursorLocation = 3rs.open sql,conn,1,3rs.AddNewrs("计划内容").Value = planrs("完成节点").Value = time1rs("是否完成").Value = overiBookmark = rs.Bookmarkrs.Updaters.Bookmark = iBookmarknewid = rs("id").Valuers.CloseSet rs = Nothingsql = "Select 计划内容,完成节点,是否完成 From table2 where f_id=" & lid    sql1 = "Select * From table2 where 1=0"Set rs = CreateObject("ADODB.RecordSet")rs.cursorLocation = 3Set rs1 = CreateObject("ADODB.RecordSet")rs1.cursorLocation = 3rs.open sql,conn,1,1Set rs.activeConnection = Nothingrs1.open sql1,conn,1,4 '批处理Do While Not rs.EOF   rs1.AddNew   rs1("f_id").Value = newid   rs1("计划内容").Value = Trim(rs("计划内容").Value)   rs1("完成节点").Value = DateAdd("m", 1, CDate(rs("完成节点").Value))   rs1("是否完成").Value = rs("是否完成").Value   rs.MoveNextLooprs1.UpdateBatchrs.closeSet rs = Nothingrs1.closeSet rs1 = Nothingconn.closeSet conn = Nothing%>