设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[查询] [求助]更新查询(同一个表中多列进行判断赋值)

[复制链接]
跳转到指定楼层
1#
发表于 2008-6-12 17:40:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
走了好多路,考虑了好多方法,也试了很多。
终于找到了个简单的方法。将数据统计全部通过查询制作。不用进行繁琐的编码编写。
现在终于把最主要的表拿了出来。但是又遇到了个问题。
怎么样通过更新查询将同一条记录里的多列通过同一记录中的其他列的比较后更新呢?
例子见附件。
其中前半部分的数据会变化,所以后部分的数据也要更改。但是要满足条件才能变化。

具体的请看窗体内说明!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2008-6-13 11:29:22 | 只看该作者
这个不写代码基本上是搞不定的
3#
 楼主| 发表于 2008-6-13 13:44:29 | 只看该作者
就是说要通过代码多重判断咯
能给个大致类似的代码么?谢谢
4#
 楼主| 发表于 2008-6-13 16:44:38 | 只看该作者
Private Sub Command37_Click()
    Dim tj As DAO.Recordset
    Set tj = CurrentDb.OpenRecordset("select * from hitlist") 'tj为 hitlist表
    Set tj1 = CurrentDb.OpenRecordset("select * from 临时表 order by 存货编码") 'tj1为 临时表
    While Not tj1.EOF
            tj.FindLast "存货编码 ='" & tj1.Fields("存货编码") & "' " '找到tj表与tj1表间相同的存货编码
            If tj1.Fields(今日库存) = tj1.Fields(昨日库存) Then   '如果A=A'不作更改
            tj.MoveNext
            End If
            If tj1.Fields(今日库存) > tj1.Fields(昨日库存) Then '如果A>A',全部为空
               tj.Edit
               tj.Fields(条件①) = Null '条件1-6全部清除为空
               tj.Fields(条件②) = Null
               tj.Fields(条件③) = Null
               tj.Fields(条件④) = Null
               tj.Fields(条件⑤) = Null
               tj.Fields(条件⑥) = Null
               tj.Update
               tj1.MoveNext
            End If
            If tj1.Fields(今日库存) < tj1.Fields(昨日库存) Then '如果A<A',判断是否满足条件6--5--3--2--1
               If tj1.Fields(今日库存) = Null Then '如果A=0 条件6满足
                  If Not tj.Fields(条件⑥) Then '如果条件6内有数值,跳到下一条记录
                  tj1.MoveNext
                  End If
                  If tj.Fields(条件⑥) Is Null Then '如果条件6为空
                     If tj.Fields(条件⑤) Is Null Then '条件6为空,条件5也为空
                         If tj1.Fields(今日库存) <= tj1.Fields(今年发货数量) Then 'A<=B,条件4满足
                            If tj1.Fields(条件④) Is Null Then '如果条件4为空
                            tj.Edit
                            tj.Fields(条件④) = "Data()"
                            tj.Update
                            tj1.MoveNext
                            End If
                         End If
                     End If
                     If Not tj1.Fields(条件⑤) Then '条件6为空,条件5有数值,跳到下一条记录
                         tj1.MoveNext
                     End If
                  tj.Edit
                  tj.Fields(条件⑥) = "Data()"
                  tj.Update
                  tj1.MoveNext
                End If
                If tj.Fields(今日库存) <= 3 Then '如果条件5满足
                  If Not tj1.Fields(条件⑤) Then '如果条件5内有数值,跳到下一条记录
                  tj1.MoveNext
                  End If
                  If tj1.Fields(条件⑤) Is Null Then '如果条件5为空
                  tj.Edit
                  tj.Fields(条件⑤) = "Data()"
                  tj.Update
                  tj1.MoveNext
                  End If
                End If
                If tj1.Fields(今日库存) <= tj1.Fields(年平均销量) / 4 Then '如果A<=D/4,条件3满足
                   If Not tj1.Fields(条件③) Then '如果条件3内有数值
                   End If
                   If tj1.Fields(条件③) Is Null Then '如果条件3为空
                   tj.Edit
                   tj.Fields(条件③) = "Data()"
                   tj.Update
                   tj1.MoveNext
                   End If
                End If
                If tj1.Fields(今日库存) <= tj1.Fields(年平均销量) / 2 Then '如果A<=D/2,条件2满足
                   If Not tj1.Fields(条件②) Then '如果条件2内有数值
                   End If
                   If tj1.Fields(条件②) Is Null Then '如果条件2为空
                   tj.Edit
                   tj.Fields(条件②) = "Data()"
                   tj.Update
                   tj1.MoveNext
                   End If
                End If
                If tj1.Fields(今日库存) <= tj1.Fields(年平均销量) Then '如果A<=D,条件1满足
                   If Not tj1.Fields(条件①) Then '如果条件1内有数值
                   End If
                   If tj1.Fields(条件①) Is Null Then '如果条件1为空
                   tj.Edit
                   tj.Fields(条件①) = "Data()"
                   tj.Update
                   tj1.MoveNext
                   End If
                End If
            End If
    Wend
    tj.Close
    tj1.Close
    Set tj = Nothing
    Set tj1 = Nothing
    MsgBox "    更新成功    "
End Sub
报错 wend没有while
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-23 13:17 , Processed in 0.095656 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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