Foxtable(狐表)用户栏目专家坐堂 → 产品与模具的关系


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

主题:产品与模具的关系

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


加好友 发短信
等级:六尾狐 帖子:1459 积分:9461 威望:0 精华:0 注册:2014/12/18 16:12:00
产品与模具的关系  发帖心情 Post By:2018/12/15 17:06:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:产品与模具的关系.xls


请看附页excel档案。我有两个数据表,即“物料字典”和“模具清单”。“模具清单”里面的一个模具型号在“物料字典”里面可能会包含多个物料编号,这些物料编号会在“模具清单”的“所应用的产品”这个数据列反映出来。那么,当“物料字典”里面增加、删除数据行或者修改其“模具型号”内容时,希望“模具清单”里面的“所应用的产品”这栏的数据能够得到立即更新。请赐教代码如何写。谢谢。

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


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

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


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


加好友 发短信
等级:六尾狐 帖子:1459 积分:9461 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2018/12/17 10:40:00 [只看该作者]

不要意思,我的foxtable版本低了,打不开你给的档案。可否请你将代码发给我即可?谢谢。

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


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

物料字典_DataColChanged

 

Select Case e.DataCol.Name
    Case "模具型号","物料编号"
        Dim dr As DataRow = DataTables("模具清单").Find("模具型号='" & e.DataRow("模具型号") & "'")
        If dr Is Nothing Then
            dr = DataTables("模具清单").AddNew
            dr("模具型号") = e.DataRow("模具型号")
        End If
        dr("所应用的产品") = e.DataTable.GetComboListString("物料编号","模具型号='" & e.DataRow("模具型号") & "'").Replace("|",",")
        If e.DataCol.Name = "模具型号" AndAlso e.OldValue > "" Then
            dr = DataTables("模具清单").Find("模具型号='" & e.OldValue  & "'")
            If dr IsNot Nothing Then
                dr("所应用的产品") = e.DataTable.GetComboListString("物料编号","模具型号='" & e.OldValue & "'").Replace("|",",")
            End If
           
        End If
End Select

 

物料字典_DataRowDeleting

 

Dim dr As DataRow = DataTables("模具清单").Find("模具型号='" & e.DataRow("模具型号") & "'")
If dr IsNot Nothing Then
    dr("所应用的产品") = e.DataTable.GetComboListString("物料编号","模具型号='" & e.DataRow("模具型号") & "' and [_Identify] <>" & e.DataRow("_Identify")).Replace("|",",")
End If


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


加好友 发短信
等级:六尾狐 帖子:1459 积分:9461 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2018/12/17 16:32:00 [只看该作者]

Select Case e.DataCol.Name

    Case "模具型号"

        If e.DataRow("模具型号") <> "不适用"

            Dim dr As DataRow = DataTables("模具清单").Find("模具型号='" & e.DataRow("模具型号") & "'")

            dr("所应用的产品") = e.DataTable.GetComboListString("物料编号","模具型号='" & e.DataRow("模具型号") & "'").Replace("|",",")

        End If

End Select

If e.DataCol.Name = "模具型号" AndAlso e.OldValue > "" AndAlso e.newvalue <> "不适用" Then

    Dim dr As DataRow = DataTables("模具清单").Find("模具型号='" & e.DataRow("模具型号") & "'")

    dr = DataTables("模具清单").Find("模具型号='" & e.OldValue  & "'")

    If dr IsNot Nothing Then

        dr("所应用的产品") = e.DataTable.GetComboListString("物料编号","模具型号='" & e.OldValue & "'").Replace("|",",")

    End If

End If


我将你的代码更改上面那样。我在“物料字典”里面增加和删除数据行时,能够正常运行,满足我们的要求。但是当我在“物料字典”里面执行“模具型号”的“重置列”时,会出现如下警告:


.NET Framework 版本:2.0.50727.8793

Foxtable 版本:2017.3.18.1

错误所在事件:表,物料字典, DataColChanged

详细错误信息:

调用的目标发生了异常。

未将对象引用设置到对象的实例。


为什么呢?


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


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

没看懂你需要做什么效果,先试试

 

Select Case e.DataCol.Name
    Case "模具型号"
        If e.DataRow("模具型号") <> "不适用"
            Dim drs = DataTables("模具清单").Select("模具型号='" & e.DataRow("模具型号") & "'")
            Dim str = e.DataTable.GetComboListString("物料编号","模具型号='" & e.DataRow("模具型号") & "'").Replace("|",",")
            For Each dr As DataRow In drs
                dr("所应用的产品") = str
            Next
        End If       
End Select

If e.DataCol.Name = "模具型号" AndAlso e.OldValue > "" AndAlso e.newvalue <> "不适用" Then
   
    Dim drs1 = DataTables("模具清单").Select("模具型号='" & e.DataRow("模具型号") & "'")
   
    Dim drs2 = DataTables("模具清单").Select("模具型号='" & e.OldValue  & "'")
    Dim str1 = e.DataTable.GetComboListString("物料编号","模具型号='" & e.DataRow("模具型号") & "'").Replace("|",",")
    Dim str2 = e.DataTable.GetComboListString("物料编号","模具型号='" & e.OldValue & "'").Replace("|",",")
   
    For Each dr As DataRow In drs1
        dr("所应用的产品") = str1
    Next
    For Each dr As DataRow In drs2
        dr("所应用的产品") = str2
    Next   
End If


 回到顶部