设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

123下一页
返回列表 发新帖
查看: 4607|回复: 29
打印 上一主题 下一主题

[查询] 请教如何用追加查询分类配额

[复制链接]
跳转到指定楼层
1#
发表于 2011-12-22 09:28:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
a表
单号       类别    需求数额    配额    差额
t1101     a01      500            0        -500
t1102     a01      300            0        -300
t1105     b01      600            0        -600
t1107     b01      400            0        -400
t1115     b01      800            0        -800

b表
类别    剩余数量   
a01      1500                     
b01      1200      

如何实现讲b表的数据逐一分配给a表   
得出以下结果
单号       类别    需求数额    配额    差额
t1101     a01      500           500      0
t1102     a01      300           300      0
t1105     b01      600           600      0
t1107     b01      400           400      0
t1115     b01      800           200     -600

   
           
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2011-12-22 10:14:52 | 只看该作者
把例子传上来,研究研究!
3#
 楼主| 发表于 2011-12-22 11:08:57 | 只看该作者
Henry D. Sy 发表于 2011-12-22 10:14
把例子传上来,研究研究!

谢谢赐教!
4#
 楼主| 发表于 2011-12-22 11:09:18 | 只看该作者
谢谢赐教!

本帖子中包含更多资源

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

x
5#
发表于 2011-12-22 11:53:08 | 只看该作者
  1. Private Sub Command0_Click()
  2.     Dim rs As New ADODB.Recordset
  3.     Dim rst As New ADODB.Recordset
  4.     Dim cnn As New ADODB.Connection
  5.     Dim sSQL As String
  6.     Dim lngBal As Long
  7.     Set cnn = CurrentProject.Connection
  8.     sSQL = "select  类别,剩余数量 from b"
  9.     rs.Open sSQL, cnn, adOpenKeyset, adLockReadOnly

  10.     Do While Not rs.EOF
  11.         lngBal = rs.Fields("剩余数量")
  12.         sSQL = "select * from a where 类别='" & rs.Fields("类别") & "'"
  13.         rst.Open sSQL, cnn, adOpenKeyset, adLockOptimistic
  14.         With rst
  15.             Do While Not .EOF
  16.                 If lngBal >= .Fields("需求数额") Then
  17.                     .Fields("配额") = .Fields("需求数额")
  18.                 Else
  19.                     .Fields("配额") = lngBal
  20.                 End If
  21.                 .Fields("差额") = .Fields("配额") - .Fields("需求数额")
  22.                 lngBal = lngBal - .Fields("配额")
  23.                 .Update
  24.                 .MoveNext
  25.             Loop
  26.             .Close
  27.         End With
  28.         rs.MoveNext
  29.     Loop
  30.     rs.Close
  31.     Set rs = Nothing
  32.     Set rst = Nothing
  33.     Set cnn = Nothing
  34. End Sub
复制代码
6#
发表于 2011-12-22 12:05:58 | 只看该作者
本帖最后由 Henry D. Sy 于 2011-12-22 12:06 编辑

建议在b中增加一字段:分配后余额,用于显示实际库存
则代码调整如下:
  1. Private Sub Command0_Click()
  2.     Dim rs As New ADODB.Recordset
  3.     Dim rst As New ADODB.Recordset
  4.     Dim cnn As New ADODB.Connection
  5.     Dim sSQL As String
  6.     Dim lngBal As Long
  7.     Dim lngUsed As Long
  8.     Set cnn = CurrentProject.Connection
  9.     sSQL = "select  类别,剩余数量,分配后余额 from b"
  10.     rs.Open sSQL, cnn, adOpenKeyset, adLockOptimistic

  11.     Do While Not rs.EOF
  12.         lngBal = rs.Fields("剩余数量")
  13.         lngUsed = 0
  14.         sSQL = "select * from a where 类别='" & rs.Fields("类别") & "'"
  15.         rst.Open sSQL, cnn, adOpenKeyset, adLockOptimistic
  16.         With rst
  17.             Do While Not .EOF
  18.                 If lngBal >= .Fields("需求数额") Then
  19.                     .Fields("配额") = .Fields("需求数额")
  20.                 Else
  21.                     .Fields("配额") = lngBal
  22.                 End If
  23.                 .Fields("差额") = .Fields("配额") - .Fields("需求数额")
  24.                 lngBal = lngBal - .Fields("配额")
  25.                 lngUsed = lngUsed + .Fields("配额")
  26.                 .Update
  27.                 .MoveNext
  28.             Loop
  29.             .Close
  30.         End With
  31.         rs.Fields("分配后余额") = rs.Fields("剩余数量") - lngUsed
  32.         rs.Update
  33.         rs.MoveNext
  34.     Loop
  35.     rs.Close
  36.     Set rs = Nothing
  37.     Set rst = Nothing
  38.     Set cnn = Nothing
  39. End Sub

复制代码
7#
 楼主| 发表于 2011-12-22 13:41:24 | 只看该作者
谢谢!
万分感谢!应用于窗体很实用。

自己用查询实现!查询“D”的“配额V”,“差额V”得出想要的结果!

本帖子中包含更多资源

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

x
8#
 楼主| 发表于 2011-12-22 13:41:41 | 只看该作者
Henry D. Sy 发表于 2011-12-22 12:05
建议在b中增加一字段:分配后余额,用于显示实际库存
则代码调整如下:

谢谢!
9#
 楼主| 发表于 2011-12-22 14:01:55 | 只看该作者
Henry D. Sy 发表于 2011-12-22 12:05
建议在b中增加一字段:分配后余额,用于显示实际库存
则代码调整如下:

想要B表追加一次后,后续数字改变了,要继续追加,先判断配额是否足够,已配足的不再配额,不足的继续配足。

请帮我修改一下你的代码。
10#
发表于 2011-12-22 14:55:50 | 只看该作者
lin2003_lin 发表于 2011-12-22 14:01
想要B表追加一次后,后续数字改变了,要继续追加,先判断配额是否足够,已配足的不再配额,不足的继续配足 ...

什么意思
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-21 01:52 , Processed in 0.109865 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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