Foxtable(狐表)用户栏目专家坐堂 → 控制生产累计数不允许大于计划生产数


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

主题:控制生产累计数不允许大于计划生产数

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


加好友 发短信
等级:超级版主 帖子:105495 积分:536466 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/12/15 21:19:00 [只看该作者]

    dr("生产计划数") = DataTables("生产计划表").Compute("sum(数量)","[产品名称] = '" & Ary(0) & "' and 订单号='" & Ary(2) & "'")

 回到顶部
美女呀,离线,留言给我吧!
意悠心轻
  72楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
  发帖心情 Post By:2016/12/15 22:27:00 [只看该作者]

谢谢,麻烦删除我上传的FOXtable文件。

 回到顶部
美女呀,离线,留言给我吧!
意悠心轻
  73楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
  发帖心情 Post By:2016/12/15 22:34:00 [只看该作者]

没生产的计划数依然没显示,大概没工序之故吧,但能否安产品名称把没生产的计划订单号和数量显示出来,起马让他们知道哪张单没生产。


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/12/16 8:42:00 [只看该作者]

 理解不了你的逻辑,请看懂代码,改成你真实需要功能。

 回到顶部
美女呀,离线,留言给我吧!
意悠心轻
  75楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
  发帖心情 Post By:2016/12/16 10:02:00 [只看该作者]

就是在生产计划单上有跟冲压车间工资表上相同的产品名称,冲压车间工资表上没这张订单号,也就是说这张订单还未生产,所以冲压车间工资表上未显示,窗口5选项上应包含这些数据,现在显示没有。

[此贴子已经被作者于2016/12/16 16:32:36编辑过]

 回到顶部
美女呀,离线,留言给我吧!
意悠心轻
  76楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
  发帖心情 Post By:2016/12/16 10:03:00 [只看该作者]

我一直在想这代码应怎么写,还没想出来。


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/12/16 10:26:00 [只看该作者]

 大致代码,细节可以自己调整。

 

Dim t As Table = e.Form.DropTable
Dim Filter As String = "1=1"
If t.Current.IsNull("产品名称") = False Then
    filter &= " and [产品名称] = '" & t.Current("产品名称") & "'"
End If
If t.Current.IsNull("生产工序") = False Then
    filter &= " And 生产工序='" & t.current("生产工序") & "'"
End If
If t.Current.IsNull("订单号") = False Then
    filter &= " And 订单号='" & t.current("订单号") & "'"
End If

DataTables("生产进度汇总表").StopRedraw
DataTables("生产进度汇总表").DataRows.Clear
Dim Arys As List(Of String())
Arys = DataTables("冲压车间工资表").GetValues("产品名称|生产工序|订单号", filter)
For Each Ary As String() In Arys
    Dim dr As DataRow = DataTables("生产进度汇总表").AddNew()
    dr("产品名称") = Ary(0)
    dr("生产工序") = Ary(1)
    dr("订单号") = Ary(2)
Next
For Each ary As String() In DataTables("生产计划表").GetValues("产品名称|订单号", filter)
    Dim fdr As DataRow = DataTables("生产进度汇总表").Find("[产品名称] = '" & Ary(0) & "' and 订单号='" & Ary(1) & "'")
    If fdr Is Nothing Then
        Dim dr As DataRow = DataTables("生产进度汇总表").AddNew()
        dr("产品名称") = Ary(0)
        dr("订单号") = Ary(1)
    End If
Next
For Each dr As DataRow In DataTables("生产进度汇总表").DataRows
    dr("实际生产数") = DataTables("冲压车间工资表").Compute("sum(数量)","[产品名称] = '" & dr("产品名称") & "' and 生产工序='" & dr("生产工序") & "' and 订单号='" & dr("订单号") & "'")
    dr("半成品进仓数") = DataTables("半成品完工进仓表").Compute("sum(数量)","[产品名称] = '" & dr("产品名称") & "' and 订单号='" & dr("订单号") & "'")
    dr("生产计划数") = DataTables("生产计划表").Compute("sum(数量)","[产品名称] = '" & dr("产品名称") & "' and 订单号='" & dr("订单号") & "'")
Next

DataTables("生产进度汇总表").ResumeRedraw


e.Form.DropDownBox.Select() '将输入焦点返回下拉列表框


 回到顶部
美女呀,离线,留言给我吧!
意悠心轻
  78楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
  发帖心情 Post By:2016/12/16 11:08:00 [只看该作者]

.NET Framework 版本:2.0.50727.5446
Foxtable 版本:2016.7.29.1
错误所在事件:DropDownOpened
详细错误信息:
未找到列 [生产工序]。

 回到顶部
美女呀,离线,留言给我吧!
意悠心轻
  79楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
  发帖心情 Post By:2016/12/16 11:10:00 [只看该作者]

要分条件显示了。

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/12/16 11:22:00 [只看该作者]

Dim t As Table = e.Form.DropTable
Dim Filter As String = "1=1"
Dim Filter2 As String = "1=1"
If t.Current.IsNull("产品名称") = False Then
    filter &= " and [产品名称] = '" & t.Current("产品名称") & "'"
    filter2 &= " and [产品名称] = '" & t.Current("产品名称") & "'"
End If
If t.Current.IsNull("生产工序") = False Then
    filter &= " And 生产工序='" & t.current("生产工序") & "'"
End If
If t.Current.IsNull("订单号") = False Then
    filter &= " And 订单号='" & t.current("订单号") & "'"
    filter2 &= " And 订单号='" & t.current("订单号") & "'"
End If

DataTables("生产进度汇总表").StopRedraw
DataTables("生产进度汇总表").DataRows.Clear
Dim Arys As List(Of String())
Arys = DataTables("冲压车间工资表").GetValues("产品名称|生产工序|订单号", filter)
For Each Ary As String() In Arys
    Dim dr As DataRow = DataTables("生产进度汇总表").AddNew()
    dr("产品名称") = Ary(0)
    dr("生产工序") = Ary(1)
    dr("订单号") = Ary(2)
Next
For Each ary As String() In DataTables("生产计划表").GetValues("产品名称|订单号", filter2)
    Dim fdr As DataRow = DataTables("生产进度汇总表").Find("[产品名称] = '" & Ary(0) & "' and 订单号='" & Ary(1) & "'")
    If fdr Is Nothing Then
        Dim dr As DataRow = DataTables("生产进度汇总表").AddNew()
        dr("产品名称") = Ary(0)
        dr("订单号") = Ary(1)
    End If
Next
For Each dr As DataRow In DataTables("生产进度汇总表").DataRows
    dr("实际生产数") = DataTables("冲压车间工资表").Compute("sum(数量)","[产品名称] = '" & dr("产品名称") & "' and 生产工序='" & dr("生产工序") & "' and 订单号='" & dr("订单号") & "'")
    dr("半成品进仓数") = DataTables("半成品完工进仓表").Compute("sum(数量)","[产品名称] = '" & dr("产品名称") & "' and 订单号='" & dr("订单号") & "'")
    dr("生产计划数") = DataTables("生产计划表").Compute("sum(数量)","[产品名称] = '" & dr("产品名称") & "' and 订单号='" & dr("订单号") & "'")
Next

DataTables("生产进度汇总表").ResumeRedraw


e.Form.DropDownBox.Select() '将输入焦点返回下拉列表框


 回到顶部