Foxtable(狐表)用户栏目专家坐堂 → [求助]多列跨表有条件引用


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

主题:[求助]多列跨表有条件引用

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


加好友 发短信
等级:婴狐 帖子:10 积分:153 威望:0 精华:0 注册:2017/1/8 0:15:00
[求助]多列跨表有条件引用  发帖心情 Post By:2017/1/8 20:56:00 [只看该作者]

事情是这个样子的,首先总表的结构是这样的

总表有三种包装材料,总表中三种包材的长、宽、高、重量等均引用表二包装材料表外尺寸长宽高
列名称不一样。。
我在引用包装材料表的时候使用了以下代码
If e.DataCol.Name = "Ⅰ级包装_包装材料一_编码" Then
    If e.NewValue Is Nothing Then
        e.DataRow("Ⅰ级包装_包装材料一_长") = Nothing
        e.DataRow("Ⅰ级包装_包装材料一_宽") = Nothing
        e.DataRow("Ⅰ级包装_包装材料一_高") = Nothing
        e.DataRow("Ⅰ级包装_包装材料一_纸箱") = Nothing
    Else
        Dim dr As DataRow
        dr = DataTables("包材数据库").Find("[包材编码] = '" & e.NewValue & "'")
        If dr IsNot Nothing
            e.DataRow("Ⅰ级包装_包装材料一_纸箱") = dr("包材名称")
            e.DataRow("Ⅰ级包装_包装材料一_长") = dr("外尺寸_长")
            e.DataRow("Ⅰ级包装_包装材料一_宽") = dr("外尺寸_宽")
            e.DataRow("Ⅰ级包装_包装材料一_高") = dr("外尺寸_高")
            e.DataRow("Ⅰ级包装_包装材料一_重量") = dr("重量")
        End If
    End If
End If
虽然部分与包装材料表可以对应上的编码能够自动引用长宽高等数据
但是这些自动引用的长宽高等数据依然在可编辑状态
问题一:怎样使这些成功引用的数据处在不可编辑状态
 
同时,使那些不在包装材料表中的编码对应的长宽高数据处在可编辑状态?
 
 
第二,更新包装材料表的数据怎样使总表对应的数据同时更新?
我写的代码
Select Case e.DataCol.Name
    Case "外尺寸_长","外尺寸_宽","外尺寸_高","重量"
        Dim Filter As String = "[Ⅰ级包装_包装材料一_编码] = '" & e.DataRow("包材编码") & "'"
        Dim drs As List(Of DataRow) = DataTables("数据库").Select(Filter)
        For Each dr As DataRow In drs
            dr(e.DataCol.Name) = e.NewValue
        Next
End Select
这段代码没看出问题在哪
由于是新手,刚刚上手一天,还望大神多多指教图片点击可在新窗口打开查看
 
 

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

图片点击可在新窗口打开查看此主题相关图片如下:捕获.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2017/1/8 21:10:53编辑过]

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


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

1、StartEdit事件

 

Select Case e.Col.name
    Case "Ⅰ级包装_包装材料一_长", "Ⅰ级包装_包装材料一_宽", "Ⅰ级包装_包装材料一_高", "Ⅰ级包装_包装材料一_纸箱", "Ⅰ级包装_包装材料一_重量"
        Dim dr As DataRow = DataTables("包材数据库").Find("[包材编码] = '" & e.Row("Ⅰ级包装_包装材料一_编码") & "'")
        If dr IsNot Nothing
            e.cancel = True
        End If
End Select


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


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

2、

 

Select Case e.DataCol.Name
    Case "外尺寸_长","外尺寸_宽","外尺寸_高","重量"
        Dim Filter As String = "[Ⅰ级包装_包装材料一_编码] = '" & e.DataRow("包材编码") & "'"
        Dim drs As List(Of DataRow) = DataTables("数据库").Select(Filter)
        For Each dr As DataRow In drs
            dr("Ⅰ级包装_包装材料一_长") = e.datarow("外尺寸_长")
            dr("Ⅰ级包装_包装材料一_宽") = e.datarow("外尺寸_宽")
            dr("Ⅰ级包装_包装材料一_高") = e.datarow("外尺寸_高")
        Next
End Select


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


加好友 发短信
等级:婴狐 帖子:10 积分:153 威望:0 精华:0 注册:2017/1/8 0:15:00
  发帖心情 Post By:2017/1/8 23:38:00 [只看该作者]

谢谢大神!!!!!

图片点击可在新窗口打开查看


 回到顶部