以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请老师帮我修正产品耗料计算代码  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=169823)

--  作者:xusuyang
--  发布时间:2021/7/1 19:48:00
--  请老师帮我修正产品耗料计算代码
 1、从"导尿包产品配置表中可以得知:A、生产一个甲型“导尿包”是由1导尿管1引流袋1导管夹等组成;B、生产一个乙型“导尿包”是由2只导尿管2引流袋2导管夹等组成;C、生产一个乙型“导尿包”是由3只导尿管3引流袋3导管夹等组成
     2、当生产开单员在"导尿包产品配件耗料表中填入某一天需要:A、生产甲型导尿包,生产数量100时,用代码如何实现"导尿包产品配件耗料表导尿管、引流袋、导管夹等的类型、规格自动填入,导尿管、引流袋、导管夹等的数量各100自动计算填入B生产“乙导尿包,生产数量200时,用代码如何实现"导尿包产品配件耗料表导尿管、引流袋、导管夹等的类型、规格自动填入,导尿管、引流袋、导管夹等的数量各400自动计算填入C生产“丙导尿包,生产数量150时,用代码如何实现"导尿包产品配件耗料表导尿管、引流袋、导管夹等的类型、规格自动填入,导尿管、引流袋、导管夹等的数量各450自动计算填入
   3、老师如下代码好像实现不了上述要求
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目2.foxdb

"导尿包产品配件耗料表“datacolchanged事件

Select Case e.DataCol.Name
    Case "产品型号","生产数量"
        Dim dr As DataRow = e.DataRow
        For Each dr As DataRow In DataTables("导尿包产品配置表").Select(e.DataRow("产品型号") & "_数量 <> 0")
            e.DataRow("配件名称_" & dr("配件名称") & "_类型") = dr("类型")
            e.DataRow("配件名称_" & dr("配件名称") & "_数量") = dr(e.DataRow("产品型号") & "_数量") * e.DataRow("生产数量")
        Next
End Select

--  作者:有点蓝
--  发布时间:2021/7/1 21:01:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.zip


[此贴子已经被作者于2021/7/2 9:00:03编辑过]

--  作者:xusuyang
--  发布时间:2021/7/1 21:42:00
--  
管理项目2.foxdb的版本低,我打不开
--  作者:有点蓝
--  发布时间:2021/7/1 21:47:00
--  
更新到最新版foxtable
--  作者:xusuyang
--  发布时间:2021/7/1 21:52:00
--  
我的版本只能更新到2021.4.5,
--  作者:xusuyang
--  发布时间:2021/7/1 21:58:00
--  
请帮我转成2021.4.5,之前的版本,谢谢
--  作者:有点蓝
--  发布时间:2021/7/1 22:02: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

--  作者:xusuyang
--  发布时间:2021/7/1 22:28:00
--  
      

老师:当我在导尿包产品配件耗料表产品型号列输入甲型时,提示为:

.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

详细错误信息:

调用的目标发生了异常。

未找到列 [_数量]

 


--  作者:有点蓝
--  发布时间:2021/7/1 22:32:00
--  
7楼代码不可能会有这种提示,用的肯定不是这个代码
--  作者:xusuyang
--  发布时间:2021/7/1 22:48: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