设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1731|回复: 8
打印 上一主题 下一主题

[查询] [求助]更新查询(两个表中比较取值)

[复制链接]
跳转到指定楼层
1#
发表于 2008-6-11 10:30:54 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
现在 我有两个表
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 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
9#
发表于 2009-6-29 22:05:33 | 只看该作者
学习学习
8#
发表于 2009-6-23 11:49:48 | 只看该作者
学习中.....
7#
 楼主| 发表于 2008-6-12 10:55:04 | 只看该作者
原帖由 hi-wzj 于 2008-6-11 15:44 发表
不需要那么复杂的。
1、联合查询,将两表合并到一起。
2、汇总查询,选出日期值最大的即可。


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

[ 本帖最后由 coolabc 于 2008-6-12 11:07 编辑 ]
6#
发表于 2008-6-11 15:50:38 | 只看该作者
直接按楼上的方法就OK了
5#
发表于 2008-6-11 15:44:48 | 只看该作者
不需要那么复杂的。
1、联合查询,将两表合并到一起。
2、汇总查询,选出日期值最大的即可。
4#
 楼主| 发表于 2008-6-11 15:25:52 | 只看该作者
去年销售的表没变化,通过更新查询先赋予临时表。然后用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语句怎么写呢??
3#
 楼主| 发表于 2008-6-11 11:37:05 | 只看该作者
恩。思路有了。我先自己试一试,有问题再来请教!

点击这里给我发消息

2#
发表于 2008-6-11 11:32:17 | 只看该作者
这个只能用DAO或ADO循环
先循环完第一表,将记录插入到临时表中
然后循环第二表,看看临时表中有否记录,如果没有则插入,如果有,则判断日期是否晚,晚的话则再更新
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2025-2-23 22:23 , Processed in 0.099447 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表