Foxtable(狐表)用户栏目专家坐堂 → [求助]如何从另一表中自动提取染料组合的相同代码


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

主题:[求助]如何从另一表中自动提取染料组合的相同代码

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


加好友 发短信
等级:超级版主 帖子:107754 积分:548109 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/4 17:39:00 [显示全部帖子]

到项目命令窗口执行

For Each  r As Row In Tables("配方").Rows
    Dim dr As DataRow = DataTables("染料组合清单").Find("物料编码='" & r("物料编码") & "' And 物料名称='" & r("物料名称")  & "'")
    If dr IsNot Nothing Then
        r("染料组合编码") = dr("染料组合编码")
    End If
Next
[此贴子已经被作者于2020/3/4 17:38:54编辑过]

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


加好友 发短信
等级:超级版主 帖子:107754 积分:548109 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/5 8:59:00 [显示全部帖子]

没看懂,请举例说明一下。比如1楼的项目,按什么方式取值,最终的结果是怎么样的?

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


加好友 发短信
等级:超级版主 帖子:107754 积分:548109 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/5 14:05:00 [显示全部帖子]

仓存位置       产品代码       原料名称

Z001            产品        原料A


原料A有对应产品1和产品8,怎么知道上面Z001放的是产品1而不是产品8,根据什么规则取值?


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


加好友 发短信
等级:超级版主 帖子:107754 积分:548109 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/5 16:13:00 [显示全部帖子]

虽然可以做,但是效率非常低,需要多次遍历和查询,纯粹是硬凑的。这种设计估计是有问题的,建议从业务逻辑上重新理一下。

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


加好友 发短信
等级:超级版主 帖子:107754 积分:548109 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/5 16:45:00 [显示全部帖子]

没有完全验证,试试吧

Dim cmd As New SQLCommand
For Each  s As String In DataTables("配方").GetValues("色号","色号 is not null")
    Dim drs As List(Of  DataRow) = DataTables("配方").Select("色号='" & s & "'")
    Dim str As String = "1=2 "
    For Each dr As DataRow In drs
        str = str &  " or (物料编码='" & dr("物料编码") & "' And  物料名称='" & dr("物料名称") & "') "
    Next
    str = "Select a.染料组合编码 from (Select 染料组合编码 from {染料组合清单} group by 染料组合编码 having count(染料组合编码) = " & drs.Count & ") As a Inner join (Select 染料组合编码 from {染料组合清单} where " & str & "  group by 染料组合编码 having count(染料组合编码) = " & drs.Count & ") As b on a.染料组合编码=b.染料组合编码"

    cmd.CommandText = str
    Dim v1 = cmd.ExecuteScalar()
    If v1 > ""
        DataTables("配方").ReplaceFor("染料组合编码",v1,"色号='" & s & "'")
    End If
Next

 回到顶部