以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教产品耗料计算  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=169840)

--  作者:xusuyang
--  发布时间:2021/7/2 20:26:00
--  请教产品耗料计算

老师:您好!是不是前几天的"导尿包产品配置表"导尿包产品配件耗料表设计上有问题,今天我重新将两个表设计了一下。

1、从"导尿包产品配置表中可以看出:A、生产一个甲型“导尿包”是由1只导尿管1只引流袋1只导管夹等配件组成;B、生产一个乙型“导尿包”是由2只导尿管、2只引流袋、2只导管夹等配件组成;C生产一个乙型“导尿包”是由3只导尿管、3只引流袋、3只导管夹等配件组成
     2
、假设2021.7.10需生产一批导尿包,生产开单员于在"导尿包产品配件耗料表中填入:A、生产生产数量100甲型导尿包,用代码如何实现"导尿包产品配件耗料表“配件信息”中的“导尿管、引流袋、导管夹等的“类型、规格”自动填入“导尿管、引流袋、导管夹”等的“数量”100自动计算填入

B、生产生产数量200甲型导尿包,用代码如何实现"导尿包产品配件耗料表“配件信息”中的“导尿管、引流袋、导管夹等的“类型、规格”自动填入“导尿管、引流袋、导管夹”等的“数量”400自动计算填入             

C、生产生产数量150甲型导尿包,用代码如何实现"导尿包产品配件耗料表“配件信息”中的“导尿管、引流袋、导管夹等的“类型、规格”自动填入“导尿管、引流袋、导管夹”等的“数量”450自动计算填入

昨天老师帮我写的代码:

Select Case e.DataCol.Name

    Case "产品型号","生产数量"

        If e.DataRow.IsNull("产品型号") Then

            For Each dc As DataCol In  e.DataTable.DataCols

                If dc.Name Like "配件名称_*" Then

                    e.DataRow(dc.Name) = Nothing

                End If

            Next

        Else

            For Each dr As DataRow In DataTables("导尿包产品配置表").Select("数量_" & e.DataRow("产品型号") & " <> 0 and 配件名称 Is not null")

                e.DataRow("配件名称_" & dr("配件名称") & "_类型") = dr("类型")

                e.DataRow("配件名称_" & dr("配件名称") & "_数量") = dr("数量_" & e.DataRow("产品型号")) * e.DataRow("生产数量")

            Next

        End If

End Select

我复制到:"导尿包产品配件耗料表“datacolchanged事件后,

当我在"导尿包产品配件耗料表生产数量”输入100时,当我在导尿包产品配件耗料表产品型号列输入甲型时,提示为:

.NET Framework 版本:4.0.30319.42000

Foxtable 版本:2020.5.29.8

错误所在事件:表,导尿包产品配件耗料表,DataColChanged

详细错误信息:

调用的目标发生了异常。

未找到列 [_数量]

当我在"导尿包产品配件耗料表生产数量”输入100时,当我在导尿包产品配件耗料表产品型号列输入甲型时,提示为:

.NET Framework 版本:4.0.30319.42000

Foxtable 版本:2020.5.29.8

错误所在事件:表,导尿包产品配件耗料表,DataColChanged

详细错误信息:

调用的目标发生了异常。

未找到列 [甲型_数量]

今天还请老师帮我看看哪里有问题,谢谢!!!

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目2.foxdb


--  作者:xusuyang
--  发布时间:2021/7/2 20:28:00
--  
我的Foxtable的版本是2012.4.5前
--  作者:有点蓝
--  发布时间:2021/7/3 9:42:00
--  
那就相应改一下列名就行了

Select Case e.DataCol.Name
    Case "产品型号","生产数量"
        If e.DataRow.IsNull("产品型号") Then
            For Each dc As DataCol In  e.DataTable.DataCols
                If dc.Name Like "配件信息_*" Then
                    e.DataRow(dc.Name) = Nothing
                End If
            Next
        Else
            For Each dr As DataRow In DataTables("导尿包产品配置表").Select("产品型号_" & e.DataRow("产品型号") & " <> 0 and 配件信息_名称 Is not null")
                e.DataRow("配件信息_" & dr("配件信息_名称") & "_类型") = dr("配件信息_类型")
                e.DataRow("配件信息_" & dr("配件信息_名称") & "_数量") = dr("产品型号_" & e.DataRow("产品型号")) * e.DataRow("生产数量")
            Next
        End If
End Select

另外注意把【生产数量】列改为整数类型