从一表中插入记录到另一表.谢谢

时间:2022-11-24 15:35:29
w_1表结构如下:
-----|---------------------------------- |
id   | t_id_1 | b_id_1 | tons_1|weight_1 |                
 1   | 2201  2202   312  985    | 
 2   |  2208    2209      416    5645    |
 3   |  3106    3107      626    145     |
 4   |  2201    2202      658    45687   |
 5   |  3106    2209      785    4875    |
_____|___________________________________|
w_all表结构如下:
-----|------------------------------- |
id   | w_id | tons_all|weight_all     |
 1   |  2201    A        B         |
 2   |  2202                          |
 3   |  2208                          |
 4   |  2209      C         D         |
 5   |  3106                          |
 6   |  3107                          |
 7   | 6881                      |
 8   | 6882                          |
 9   |  7308                          |   
 10  |  7309                          | 
 11  |  9236                          |
 12  |  9237                          |
_ ___|________________________________|
conn.BeginTrans
Do While Not rst.EOF
           If rst.Fields("wr_tons_1") = 0 Then
           strid = rst.Fields("id")
           Sql = "insert into w_1 SELECT t_id_1,b_id_1,weight_1,tons_1 FROM roll where id= " & strid - 1
           conn.Execute Sql
           sql1 = "select t_id_1,b_id_1,weight_1,tons_1 from wr_1 where ID=(select max(ID) from w_1)"
           Rst1.Open sql1, conn, 3, 3
           str_tons = Rst1.Fields("tons_1")
           str_wear = Rst1.Fields("wear_1")
           str_top = Rst1.Fields("t_id_1")
           str_bot = Rst1.Fields("b_id_1")
           strsql = "update w_all Set tons_all=tons_all +" & str_tons & ",wear_all=wr_wear_all +" & str_wear & " where wr_id=" & str_top
           conn.Execute strsql
           strsql2 = "update w_all Set tons_all=tons_all +" & str_tons & ",wear_all=wr_wear_all +" & str_wear & " where wr_id=" & str_bot
           conn.Execute strsql2
        End If
           Set Rst1 = Nothing
           rst.MoveNext
    Loop
          conn.CommitTrans

功能一:(已实现)
上面代码实现的功能是:当表w_1有新的记录时,按照表w_1的t_id_1,b_id_1号,如果能在表wr_all的wr_id号中找到相同号码的话,就按对应的号码把weight_all,tons_all累加求和

想要的功能:
当表w_1有新的记录时,但表w_1的t_id_1,b_id_1号不能在表wr_all的wr_id号中找到相同号码的话,就把w_1的记录插入到表wr_all中,做为新的记录.
把w_1中,t_id_1,b_id_1号分别插入到表wr_all的wr_id字段内.把tons_1,weight_1,分别插入到表wr_all的weight_all,tons_all中.
如此循环下去.
大家一定要帮帮!!我好吗?谢谢大家了.

7 个解决方案

#1


可以考虑左右关联。

#2


你在上面插入w_1表的新记录的同时,判断是否在wr_all里面是否有记录,如是,则执行你上面的程序;如否,则在wr_all表里插入.

#3


cngxylyh(olo):
你好,我知道在wr_all里判断有没有相同的wr_id,但怎样判断呢,每循环一次对于表w_1来说只有一条记录,但就是只有一条记录要跟表wr_all里的全部记录对比一下.看看是否为相同.
我不知要怎样写代码大家能否给个例子,谢谢

#4


给个思路: 
if  not  exists(select * from w_all where w_id ='abc')
   begin
         insert into w_1 //省略
         insert into w_all (feildnamelist)values(valuelist)
         insert into w_all (w_id)values(b_id_1) 
   end if
else
   begin
         insert into w_1 //省略
         update  w_all set tons_all='fff',weight_all='sdf' where  w_id ='abc'     
   end

#5


我知道什么思想:可是
我知道在wr_all里判断有没有相同的wr_id,但怎样判断,每循环一次对于表w_1来说只有一条记录,但就是只有一条记录要跟表wr_all里的全部记录对比一下.看看是否为相同.
我不知要怎样写代码大家能否给个例子

#6


大家能否给个例子,谢谢

#7


问题已解决

#1


可以考虑左右关联。

#2


你在上面插入w_1表的新记录的同时,判断是否在wr_all里面是否有记录,如是,则执行你上面的程序;如否,则在wr_all表里插入.

#3


cngxylyh(olo):
你好,我知道在wr_all里判断有没有相同的wr_id,但怎样判断呢,每循环一次对于表w_1来说只有一条记录,但就是只有一条记录要跟表wr_all里的全部记录对比一下.看看是否为相同.
我不知要怎样写代码大家能否给个例子,谢谢

#4


给个思路: 
if  not  exists(select * from w_all where w_id ='abc')
   begin
         insert into w_1 //省略
         insert into w_all (feildnamelist)values(valuelist)
         insert into w_all (w_id)values(b_id_1) 
   end if
else
   begin
         insert into w_1 //省略
         update  w_all set tons_all='fff',weight_all='sdf' where  w_id ='abc'     
   end

#5


我知道什么思想:可是
我知道在wr_all里判断有没有相同的wr_id,但怎样判断,每循环一次对于表w_1来说只有一条记录,但就是只有一条记录要跟表wr_all里的全部记录对比一下.看看是否为相同.
我不知要怎样写代码大家能否给个例子

#6


大家能否给个例子,谢谢

#7


问题已解决