以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  有两个表 货品和货品目录表 结构一样?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=148078)

--  作者:jswjyjf
--  发布时间:2020/3/30 20:18:00
--  有两个表 货品和货品目录表 结构一样?

有两个表 货品和货品目录表 结构一样? 货品表的颜色 尺码都是多值字段 ,现在要根据货品表生成细化的货品目录表 如图
图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看




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

[此贴子已经被作者于2020/3/30 20:19:15编辑过]

--  作者:有点蓝
--  发布时间:2020/3/30 20:20:00
--  
2个循环,先遍历图一所有行,然后再根据颜色拆分后的数组遍历:http://www.foxtable.com/webhelp/topics/0245.htm
--  作者:jswjyjf
--  发布时间:2020/3/30 20:40:00
--  
Dim dr As Row
dr = Tables("货品").current
Dim nms() As String = dr("颜色").Split(",")
Dim nms2() As String = dr("尺码").Split(",")
For Each name As String In Nms
    For Each name2 As String In Nms2
        Dim r As Row = Tables("货品目录表").AddNew()
        r("货品名称")=dr("货品名称")
        r("颜色")=name
        r("尺码")=name2
    Next
Next

可以了 ,不过代码是否可以优化,麻烦帮我看一下 如果已经存在相同的颜色 尺码 货号 就要跳过去
[此贴子已经被作者于2020/3/30 20:41:26编辑过]

--  作者:jswjyjf
--  发布时间:2020/3/30 21:03:00
--  
Dim dr As Row
dr = Tables("货品").current
DataTables("货品目录表").SQLDeleteFor("货号=\'" & dr("货号") & "\'")
DataTables("货品目录表").RemoveFor("货号=\'" & dr("货号") & "\'")
Dim nms() As String = dr("颜色").Split(",")
Dim nms2() As String = dr("尺码").Split(",")
For Each name As String In Nms
    For Each name2 As String In Nms2
        Dim r As Row = Tables("货品目录表").AddNew()
        r("货号")=dr("货号")
        r("货品名称")=dr("货品名称")
        r("颜色")=name
        r("尺码")=name2
    Next
Next


--  作者:有点蓝
--  发布时间:2020/3/30 21:24:00
--  
同一行数据拆分后理论上是不会有重复的吧。因为颜色、尺码本身就不能选择重复的