设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
楼主: lin2003_lin
打印 上一主题 下一主题

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

[复制链接]
11#
发表于 2011-12-22 14:57:45 | 只看该作者
先判断配额是否足够,
判断哪个?b表的剩余数量够分吗?
12#
 楼主| 发表于 2011-12-22 15:11:12 | 只看该作者
Henry D. Sy 发表于 2011-12-22 14:55
什么意思

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

t1115     b01    还差600,B表在分配后为0时数据将会清空,后续B表增加数量时再次对t1115     b01 进行配额
13#
 楼主| 发表于 2011-12-22 15:23:09 | 只看该作者
Henry D. Sy 发表于 2011-12-22 14:57
先判断配额是否足够,
判断哪个?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

那么现在的b表还是1200的话(本来已经分配完了为“0”,假设再增加1200),重新点击按钮,结果还是差600,我希望当再次点击按钮的时候,
能把600的差额分配给t1115     b01 , b表剩余600

这样的话,当a表的b01继续增加需求,假使400,那么再次点击按钮,能继续将剩余的600分配400给新的需求



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

不希望增加一字段,而是将“分配后余额”直接代替元“剩余数量”
15#
发表于 2011-12-23 13:14:57 | 只看该作者
lin2003_lin 发表于 2011-12-22 15:27
不希望增加一字段,而是将“分配后余额”直接代替元“剩余数量”
  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, adLockOptimistic

  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 .Fields("差额") <> 0 Or lngBal <> 0 Then
  17.                     If lngBal >= Abs(.Fields("差额")) Then
  18.                         .Fields("配额") = .Fields("配额") + Abs(.Fields("差额"))
  19.                         lngBal = lngBal - Abs(.Fields("差额"))
  20.                     Else
  21.                         .Fields("配额") = .Fields("配额") + lngBal
  22.                         lngBal = 0
  23.                     End If
  24.                     .Fields("差额") = .Fields("配额") - .Fields("需求数额")
  25.                     .Update
  26.                     rs.Fields("剩余数量") = lngBal
  27.                     rs.Update
  28.                 End If
  29.                 .MoveNext
  30.             Loop
  31.             .Close
  32.         End With
  33.         rs.MoveNext
  34.     Loop
  35.     Me.a.Requery
  36.     Me.b.Requery
  37.     rs.Close
  38.     Set rs = Nothing
  39.     Set rst = Nothing
  40.     Set cnn = Nothing
  41. End Sub
复制代码
16#
发表于 2011-12-23 13:17:56 | 只看该作者
附件老是传不上

本帖子中包含更多资源

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

x
17#
发表于 2011-12-23 13:23:19 | 只看该作者
  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, adLockOptimistic

  10.     Do While Not rs.EOF
  11.         lngBal = rs.Fields("剩余数量")
  12.         If lngBal <> 0 Then
  13.             sSQL = "select * from a where 类别='" & rs.Fields("类别") & "'"
  14.             rst.Open sSQL, cnn, adOpenKeyset, adLockOptimistic
  15.             With rst
  16.                 Do While Not .EOF
  17.                     If .Fields("差额") <> 0 Then
  18.                         If lngBal >= Abs(.Fields("差额")) Then
  19.                             .Fields("配额") = .Fields("配额") + Abs(.Fields("差额"))
  20.                             lngBal = lngBal - Abs(.Fields("差额"))
  21.                         Else
  22.                             .Fields("配额") = .Fields("配额") + lngBal
  23.                             lngBal = 0
  24.                         End If
  25.                         .Fields("差额") = .Fields("配额") - .Fields("需求数额")
  26.                         .Update
  27.                         rs.Fields("剩余数量") = lngBal
  28.                         rs.Update
  29.                     End If
  30.                     .MoveNext
  31.                 Loop
  32.                 .Close
  33.             End With
  34.         End If
  35.         rs.MoveNext
  36.     Loop
  37.     Me.a.Requery
  38.     Me.b.Requery
  39.     rs.Close
  40.     Set rs = Nothing
  41.     Set rst = Nothing
  42.     Set cnn = Nothing
  43. End Sub
复制代码
18#
发表于 2011-12-23 13:24:42 | 只看该作者

本帖子中包含更多资源

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

x
19#
 楼主| 发表于 2011-12-23 16:03:01 | 只看该作者
Henry D. Sy 发表于 2011-12-23 13:24

谢谢

运行错误“13”

20#
 楼主| 发表于 2011-12-23 16:11:14 | 只看该作者
Henry D. Sy 发表于 2011-12-23 13:23

本帖子中包含更多资源

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

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-1-11 01:26 , Processed in 0.106485 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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