Office中国论坛/Access中国论坛

标题: [求助]更新查询(两个表中比较取值) [打印本页]

作者: coolabc    时间: 2008-6-11 10:30
标题: [求助]更新查询(两个表中比较取值)
现在 我有两个表
a今年发货情况表和b去年销售
如下a
id         存货编码        日期
1          a0003-25g     2008-04-18
2          a0005-25g     2008-03-19
3          a0007-25g     2008-04-01

b表
id         存货编码        日期
1          a0003-25g     2007-08-01
2          a0005-25g     2007-10-08
3          a0008-25g     2007-11-05
那第一个A0003-25G来说进行比较,选出最大的数值,也有可能一个表中有,一个表中没有。这样就要有个比较。
生成下表后,以后在进行更新比较。同样需要比较。
请给位帮忙看看,有什么办法做到。
临时表
存货编码             最近销售日期
a0003-25g         2008-04-18
a0005-25g        2008-03-19
a0007-25g        2008-04-01
a0008-25g       2007-11-05

[ 本帖最后由 coolabc 于 2008-6-11 10:43 编辑 ]
作者: tmtony    时间: 2008-6-11 11:32
这个只能用DAO或ADO循环
先循环完第一表,将记录插入到临时表中
然后循环第二表,看看临时表中有否记录,如果没有则插入,如果有,则判断日期是否晚,晚的话则再更新
作者: coolabc    时间: 2008-6-11 11:37
恩。思路有了。我先自己试一试,有问题再来请教!
作者: coolabc    时间: 2008-6-11 15:25
去年销售的表没变化,通过更新查询先赋予临时表。然后用ado循环将表A今年发货情况表内的数据更新到临时表中。

Private Sub ComUPdate_Click()
    Dim rs As DAO.Recordset
    Dim rs1 As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset("select * from 临时表")
    Set rs1 = CurrentDb.OpenRecordset("select * from 今年销售情况表")
    While Not rs1.EOF
        if rs1.Fields(存货编码) in (select 存货编码 from 临时表) then
            If rs1.Fields(日期) > rs.Fields(最近销售日期) Then
             rs.FindLast "存货编码 = '" & rs1.Fields("存货编码") & "'"
             rs.Edit
             rs.Fields("最近交易日期") = rs1.Fields("日期")
             rs.Update
             rs1.MoveNext
             End If
            If rs1.Fields(日期) <= rs.Fields(最近销售日期) Then
             rs1.MoveNext
             End If
        End If
    Wend
    rs.Close
    rs1.Close
    Set rs = Nothing
    Set rs1 = Nothing
    MsgBox "    更新成功    "
End Sub
但是在做if是 判断rs1中的存货编码在rs中的if语句怎么写呢??
作者: hi-wzj    时间: 2008-6-11 15:44
不需要那么复杂的。
1、联合查询,将两表合并到一起。
2、汇总查询,选出日期值最大的即可。
作者: andymark    时间: 2008-6-11 15:50
直接按楼上的方法就OK了
作者: coolabc    时间: 2008-6-12 10:55
原帖由 hi-wzj 于 2008-6-11 15:44 发表
不需要那么复杂的。
1、联合查询,将两表合并到一起。
2、汇总查询,选出日期值最大的即可。


就是通过两次查询咯。
问题是,我这两张表的列不完全匹配。临时表还有其它数据。最后的目的是将今年发货情况表的最新数据更新上去,
然后把临时表作为下一步查询的主表!

[ 本帖最后由 coolabc 于 2008-6-12 11:07 编辑 ]
作者: dddd042821    时间: 2009-6-23 11:49
学习中.....
作者: chenyingfengsx    时间: 2009-6-29 22:05
学习学习




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3