以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]库存对比 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=124637) |
-- 作者:q2520 -- 发布时间:2018/9/11 10:11:00 -- [求助]库存对比 If e.DataCol.Name = "炸药_数量" Then Dim dr1 As DataRow = Tables("审批.备案").Current.DataRow Dim Sum As Double = Tables("审批.备案").Compute("Sum(炸药_数量)") Dim dr2 As DataRow dr2 = DataTables("审批").Find("[单号] = \'" & dr1("单号") & "\'") If dr2 IsNot Nothing Then If e.NewValue > dr2("炸药_数量") Then msgbox("使用备案数量不能多于审批数量") e.Cancel = True Else If sum >= dr2("炸药_数量") Then msgbox("使用备案数量不能多于审批数量") e.Cancel = True End If End If End If End If 老师给帮忙看看这个代码 哪里错了 如果数量分2条数据输入就不对 (如果审批单的数量是10 在关联表里比方说第一条数据数量 8 第二条数量只要不超过10就可以输入 但是我要的效果是 关联表里的总数 不能超过审批单里的数量)
|
-- 作者:有点甜 -- 发布时间:2018/9/11 10:33:00 -- If e.DataCol.Name = "炸药_数量" Then Dim Sum As Double = DataTables("备案").Compute("Sum(炸药_数量)","[单号] = \'" & dr1("单号") & "\'") Dim dr2 As DataRow dr2 = DataTables("审批").Find("[单号] = \'" & dr1("单号") & "\'") If dr2 IsNot Nothing Then If e.NewValue+sum-e.oldvalue > dr2("炸药_数量") Then msgbox("使用备案数量不能多于审批数量") e.Cancel = True End If End If End If |
-- 作者:q2520 -- 发布时间:2018/9/11 10:48:00 -- 加上了 [此贴子已经被作者于2018/9/11 10:49:20编辑过]
|
-- 作者:有点甜 -- 发布时间:2018/9/11 10:49:00 -- |
-- 作者:q2520 -- 发布时间:2018/9/11 11:29:00 -- 甜老师 还一个问题 麻烦给写个代码 不同爆破单位 每月的审批量不一样 审批单里 同一个爆破单位 炸药 和 爆破器材的数量 不能超过每月定的值
|
-- 作者:有点甜 -- 发布时间:2018/9/11 11:32:00 -- 1、每月定的值,在什么地方?如何获取?
2、读取到每月的值,然后统计总的值,比较大小即可。
日期筛选条件,看看 http://www.foxtable.com/webhelp/scr/2720.htm
|
-- 作者:q2520 -- 发布时间:2018/9/11 15:25:00 -- If e.DataCol.Name = "炸药_数量" Then Dim dr1 = e.DataRow Dim Sum As Double = DataTables("审批").Compute("Sum(炸药_数量)","[爆破单位] = \'" & dr1("爆破单位") & "\'") Dim dr2 As DataRow dr2 = DataTables("爆破单位").Find("[爆破单位] = \'" & dr1("爆破单位") & "\'") If dr2 IsNot Nothing Then If e.NewValue+sum-e.oldvalue > dr2("炸药定量") Then msgbox("审批数量不能多于定量") e.Cancel = True End If End If End If 就你这个代码改下就行了 现在就缺一个 月的判断 甜老师给帮忙写上 比方说炸药每月定量100公斤 这个月累计到100 就不能再批了 但是下个月又重新从100开始计算了
|
-- 作者:有点甜 -- 发布时间:2018/9/11 15:28:00 -- If e.DataCol.Name = "炸药_数量" Then e.cancel = true |
-- 作者:q2520 -- 发布时间:2018/9/11 15:45:00 -- 你理解错了 100只是我打的一个比方 这个数量 是不一定的 这个代码可以统计 同一个爆破单位的总数量 但是还缺少 每月的判断 这个月如果累计到了规定数量不能再审批了 但是下个月的时候 又可以继续审批 只是不能超过定量
|
-- 作者:有点甜 -- 发布时间:2018/9/11 15:55:00 -- 比如
Dim d As Date = dr1("日期") d = New Date(d.year, d.month, 1) Dim Sum As Double = DataTables("审批").Compute("Sum(炸药_数量)","[爆破单位] = \'" & dr1("爆破单位") & "\' and 日期 >= #" & d & "# and 日期 < #" & d.addmonths(1) & "#") |