Foxtable(狐表)用户栏目专家坐堂 → [求助求


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

主题:[求助求

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


加好友 发短信
等级:三尾狐 帖子:795 积分:5880 威望:0 精华:0 注册:2018/11/3 8:24:00
  发帖心情 Post By:2019/7/26 0:07:00 [显示全部帖子]

蓝老师,那圈出来的又错回来了,它的上层MisssingQty是0的话,第1层圈出来的都应是0,又不对了。还是要麻烦老师了。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:tempd(1).foxdb


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

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


加好友 发短信
等级:三尾狐 帖子:795 积分:5880 威望:0 精华:0 注册:2018/11/3 8:24:00
  发帖心情 Post By:2019/7/26 12:23:00 [显示全部帖子]

蓝老师,还能帮忙指正这个错误吗?麻烦了。

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


加好友 发短信
等级:三尾狐 帖子:795 积分:5880 威望:0 精华:0 注册:2018/11/3 8:24:00
  发帖心情 Post By:2019/7/26 20:40:00 [显示全部帖子]

老师再帮忙看一下,今天弄了半天也没有成功。

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


加好友 发短信
等级:三尾狐 帖子:795 积分:5880 威望:0 精华:0 注册:2018/11/3 8:24:00
  发帖心情 Post By:2019/7/26 21:59:00 [显示全部帖子]

谢谢蓝老师,正解,最后一个问题。圈出来的是有小数点的,可结果是取整的了。如何调整。老师辛苦了。


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


加好友 发短信
等级:三尾狐 帖子:795 积分:5880 威望:0 精华:0 注册:2018/11/3 8:24:00
  发帖心情 Post By:2019/7/26 22:40:00 [显示全部帖子]

蓝老师,把库存表中的6.AB_000072_-的库存数量改成小数后,结果如图,红色圈出来的。谢谢您了。
图片点击可在新窗口打开查看此主题相关图片如下:捕获.jpg
图片点击可在新窗口打开查看

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


加好友 发短信
等级:三尾狐 帖子:795 积分:5880 威望:0 精华:0 注册:2018/11/3 8:24:00
  发帖心情 Post By:2019/7/26 23:52:00 [显示全部帖子]

谢谢蓝老师,已经改成Decimal了。

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


加好友 发短信
等级:三尾狐 帖子:795 积分:5880 威望:0 精华:0 注册:2018/11/3 8:24:00
  发帖心情 Post By:2019/7/27 10:46:00 [显示全部帖子]

蓝老师,您好,

 

我要把orderlist中的列company 要相应带到表物料需求中,增加了以下黄色内容,可出现了如图的错误,麻烦帮忙一下,感谢。

 

按钮 :

 

DataTables("物料需求").datarows.clear
Dim dic1 As new Dictionary(of String, Double)
For Each dr As DataRow In DataTables("库存表").Select("part is not null")
    dic1.add(dr("part"), dr("qty"))
Next
vars("dic1") = dic1

Dim dic2 As new Dictionary(of String, Double)
For Each dr As DataRow In DataTables("待检产品").Select("part is not null")
    dic2.add(dr("part"), dr("qty"))
Next
vars("dic2") = dic2

Dim dic3 As new Dictionary(of String, Double)
For Each dr As DataRow In DataTables("采购订单").Select("part is not null")
    dic3.add(dr("part"), dr("qty"))
Next
vars("dic3") = dic3

Dim dic4 As new Dictionary(of String, Double)
vars("dic4") = dic4
For Each Ary As String() In DataTables("OrderList").GetValues("PartNo|ETD|批号|company","PartNo is not null")
    Dim dr As DataRow = DataTables("物料需求").AddNew
    dr("PartNo") = ary(0)
    dr("Date") = ary(1)
    dr("批号") = ary(2)
   
    dr("company") = ary(3)

 

    Dim qty As Decimal = DataTables("OrderList").Compute("sum(Qty)","PartNo='" & ary(0) & "' And ETD='" & ary(1) & "' and 批号 ='" & ary(2) & "'")
    dr("Demand") = qty
   
    Dim flag As Boolean = True
    If dic1.ContainsKey(dr("PartNo")) Then
        If dic1(dr("PartNo")) >= qty Then
            dr("Stock") = qty
            dic1(dr("PartNo")) -= dr("Stock")
            flag = False
        ElseIf dic1(dr("PartNo")) > 0 Then
            dr("Stock") = dic1(dr("PartNo"))
            dic1(dr("PartNo")) -= dr("Stock")
        End If
    End If
    If dic2.ContainsKey(dr("PartNo")) Then
       
        Dim qty1 = dr("Demand") - dr("stock")
        If qty1 > 0 Then
            If dic2(dr("PartNo")) >= qty1 Then
                dr("QC") = qty1
               
               
                dic2(dr("PartNo")) -= dr("QC")
            ElseIf dic2(dr("PartNo")) > 0 Then
                dr("QC") = dic2(dr("PartNo"))
                dic2(dr("PartNo")) -= dr("QC")
            End If
        End If
    End If
   
    Dim drr As DataRow = DataTables("BOM").find("Fnumber =" &"'"& dr("PartNo")&"'")
    If drr IsNot Nothing
        dr("层次") = "父层"
    Else
        dr("层次") = "单件出货"
       
    End If
    Functions.Execute("sumChild",ary(0),qty, ary(0), ary(1),ary(2),ary(3),flag, dr("Stock"),dr("QC"),1,dr("Stock")+dr("QC")-qty)
   
    If dic3.ContainsKey(dr("PartNo")) Then
        If dic3(dr("PartNo")) >= qty Then
            dr("purchasingorder") = qty
            dic3(dr("PartNo")) -= dr("purchasingorder")
        ElseIf dic3(dr("PartNo")) > 0 Then
            dr("purchasingorder") = dic3(dr("PartNo"))
            dic3(dr("PartNo")) -= dr("purchasingorder")
        End If
    End If
    If flag = True Then
        dr("MissingQty") = dr("Stock")+dr("QC") -dr("Demand")
    Else
        dr("MissingQty") = Nothing
    End If
    If dic4.ContainsKey(dr("PartNo")) = False Then
        dic4.add(dr("PartNo"), dr("MissingQty"))
    Else
        dic4(dr("PartNo")) += dr("MissingQty")
    End If
    dr("SumMissing") = dic4(dr("partno"))
Next

 

For Each xm As String In DataTables("物料需求").GetValues("批号", "批号 is not null")
    Dim fdr As DataRow = DataTables("Orderlist").find("批号='" & xm & "'")
    If fdr Is Nothing Then fdr = DataTables("Orderlist").addnew
    fdr("totalmaterialqty") = DataTables("物料需求").compute("sum(demand)", "批号='" & xm & "' and PartNo not in ('物理', '化学')")
Next

 

 

函数:

 

Dim pn As String = args(0)
Dim qty As String = args(1)
Dim idx As Decimal = args(8)
Dim dic1 = vars("dic1")
Dim dic2 = vars("dic2")
Dim dic3 = vars("dic3")
Dim dic4 = vars("dic4")
Dim m1 As Decimal = args(9)
For Each dr As DataRow In  DataTables("BOM").Select("FNumber='" & pn & "'")
    Dim ndr As DataRow = DataTables("物料需求").AddNew
    ndr("PartNo") = dr("PN")
    ndr("Date") = args(3)
    ndr("批号") = args(4)

    ndr("company") = args(10)

    ndr("Demand") = dr("FQty") * qty
    ndr("层次") = "第" & idx & "层"
    Dim mq As Decimal = m1 * dr("FQty")
    Dim m2 As Decimal = args(6)+  args(7) - qty
    Dim flag = args(5) ' And m1 < 0
   
    If m1 <> 0 Then
    If dic1.ContainsKey(ndr("PartNo")) Then
        If m1 < 0 Then
            Dim aa As Decimal = mq*-1
            If dic1(ndr("PartNo")) >= aa Then
                ndr("Stock") = aa
            Else
                ndr("Stock") = dic1(ndr("PartNo"))
            End If
            flag = False
        ElseIf dic1(ndr("PartNo")) > 0 Then
            ndr("Stock") = dic1(ndr("PartNo"))
        End If
        dic1(ndr("PartNo")) -= ndr("Stock")
        If dic1(ndr("PartNo"))<0 Then dic1(ndr("PartNo")) = 0
    End If
    End If
    If dic2.ContainsKey(ndr("PartNo")) Then
        If flag = True And m1 > 0 Then
            Dim qty1 = ndr("Demand") - ndr("stock")
            If qty1 > 0 Then
                If dic2(ndr("PartNo")) >= qty1 Then
                    ndr("QC") = qty1
                    dic2(ndr("PartNo")) -= ndr("QC")
                ElseIf dic2(ndr("PartNo")) > 0 Then
                    ndr("QC") = dic2(ndr("PartNo"))
                    dic2(ndr("PartNo")) -= ndr("QC")
                End If
            End If
        ElseIf m1 < 0 Then
                Dim aa As Decimal = mq*-1
                If dic2(ndr("PartNo")) > aa - ndr("Stock")
                    ndr("QC") = aa - ndr("Stock")
                Else
                    ndr("QC") = dic2(ndr("PartNo"))
                End If
                dic2(ndr("PartNo")) -= ndr("QC")
        End If
    End If
   
   
   
    If flag = True And m1 > 0 Then
       
        If dic3.ContainsKey(ndr("PartNo")) Then
            Dim qty2 = ndr("Demand") - ndr("stock") - ndr("QC")
            If qty2 > 0 Then
                If dic3(ndr("PartNo")) >= qty2 Then
                    ndr("purchasingorder") = qty2
                   
                   
                    dic3(ndr("PartNo")) -= ndr("purchasingorder")
                ElseIf dic3(ndr("PartNo")) > 0 Then
                    ndr("purchasingorder") = dic3(ndr("PartNo"))
                    dic3(ndr("PartNo")) -= ndr("purchasingorder")
                End If
            End If
           
        End If
    End If
   
    If flag  = True AndAlso m1 > 0 Then
        ndr("MissingQty") =  ndr("Stock")+ndr("QC") -ndr("Demand")+args(6)*dr("FQty")
    Else
        If m1 < 0 AndAlso mq*-1 > ndr("Stock")+ndr("QC")
            ndr("MissingQty") = mq + (ndr("Stock")+ndr("QC"))
        Else
            ndr("MissingQty") = 0
        End If
       
    End If
    If dic4.ContainsKey(ndr("PartNo")) = False Then
        dic4.add(ndr("PartNo"), ndr("MissingQty"))
    Else
        dic4(ndr("PartNo")) += ndr("MissingQty")
    End If
    ndr("SumMissing") = dic4(ndr("partno"))
    Functions.Execute("sumChild",dr("PN"),ndr("Demand"), args(2), args(3), args(4),args(10),flag, ndr("Stock"),ndr("QC"),idx+1,ndr("MissingQty"))
Next

 

 


图片点击可在新窗口打开查看此主题相关图片如下:捕获.jpg
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:ttesp.foxdb


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


加好友 发短信
等级:三尾狐 帖子:795 积分:5880 威望:0 精华:0 注册:2018/11/3 8:24:00
  发帖心情 Post By:2019/7/27 12:12:00 [显示全部帖子]

谢谢老师,操作过程还有一个问题,就是物料需求出来的结果是按照PartNo来排序计算, 我想按照orderlist表中的顺序从上到下开始算,要怎么改?

 

附上实附,请老师再详解一下。谢谢。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:ttesp.foxdb


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


加好友 发短信
等级:三尾狐 帖子:795 积分:5880 威望:0 精华:0 注册:2018/11/3 8:24:00
  发帖心情 Post By:2019/7/27 16:39:00 [显示全部帖子]

蓝老师,我用了这个,可是还是没有严格按照表 orderlist 每条记录的顺序,在表 物料需求表中相应排序下去。您帮忙看看。谢谢了。

 

Dim Customers As List(Of String)
 Customers =  DataTables("orderlist").GetValues("ETD")


图片点击可在新窗口打开查看此主题相关图片如下:捕获.jpg
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:ttesp.foxdb


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


加好友 发短信
等级:三尾狐 帖子:795 积分:5880 威望:0 精华:0 注册:2018/11/3 8:24:00
  发帖心情 Post By:2019/8/3 9:42:00 [显示全部帖子]

非常感谢老师的帮忙, 这个表在日常中起到了很大的作用。在实际使用中还有一个特殊的事情:

 

就是表Orderlist中相同的PartNo,其中一个PartNo 要用到特殊的表BOM_1,orderlist表中列“来自BOM”中我注明了“特殊”,就是要从BOM_1中取。如何计算时当有“特殊”字样,这个产品的需求就取自BOM_1. 要保证相同的ETD,两个BOM和BOM_1的物料需求要在一起计算 ? 谢谢。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:correct.foxdb


 回到顶部
总数 22 上一页 1 2 3 下一页