Foxtable(狐表)用户栏目专家坐堂 → [求助]库存对比


  共有2415人关注过本帖树形打印复制链接

主题:[求助]库存对比

帅哥哟,离线,有人找我吗?
q2520
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:316 积分:2193 威望:0 精华:0 注册:2018/2/4 9:37:00
[求助]库存对比  发帖心情 Post By: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就可以输入   但是我要的效果是 关联表里的总数 不能超过审批单里的数量)   

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:316 积分:2193 威望:0 精华:0 注册:2018/2/4 9:37:00
  发帖心情 Post By:2018/9/11 10:48:00 [只看该作者]

加上了

[此贴子已经被作者于2018/9/11 10:49:20编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/11 10:49: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

 回到顶部
帅哥哟,离线,有人找我吗?
q2520
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:316 积分:2193 威望:0 精华:0 注册:2018/2/4 9:37:00
  发帖心情 Post By:2018/9/11 11:29:00 [只看该作者]

甜老师  还一个问题  麻烦给写个代码
不同爆破单位  每月的审批量不一样    审批单里  同一个爆破单位   炸药 和 爆破器材的数量  不能超过每月定的值   

图片点击可在新窗口打开查看此主题相关图片如下:sp.png
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/11 11:32:00 [只看该作者]

1、每月定的值,在什么地方?如何获取?

 

2、读取到每月的值,然后统计总的值,比较大小即可。

 

日期筛选条件,看看 http://www.foxtable.com/webhelp/scr/2720.htm

 


 回到顶部
帅哥哟,离线,有人找我吗?
q2520
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:316 积分:2193 威望:0 精华:0 注册:2018/2/4 9:37:00
  发帖心情 Post By: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开始计算了   

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/11 15:28: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 > 100 Then
            msgbox("不能多于每月定量")

            e.cancel = true
        Else
            If e.NewValue+sum-e.oldvalue > dr2("炸药定量") Then
                msgbox("审批数量不能多于定量")
                e.Cancel = True
            End If
        End If
    End If
End If


 回到顶部
帅哥哟,离线,有人找我吗?
q2520
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:316 积分:2193 威望:0 精华:0 注册:2018/2/4 9:37:00
  发帖心情 Post By:2018/9/11 15:45:00 [只看该作者]

你理解错了   100只是我打的一个比方  这个数量   是不一定的
这个代码可以统计  同一个爆破单位的总数量    但是还缺少  每月的判断     这个月如果累计到了规定数量不能再审批了    但是下个月的时候  又可以继续审批  只是不能超过定量

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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) & "#")


 回到顶部
总数 12 1 2 下一页