以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  vlookup 想对查找的数值进行取左边2位数后再进行匹配  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=185212)

--  作者:fx719
--  发布时间:2023/2/10 11:57:00
--  vlookup 想对查找的数值进行取左边2位数后再进行匹配
用的是这串代码,不取左边两位数是可以完全匹配的,想对查找的第三列取左边2位数后再进行查找匹配
If e.DataCol.Name = "第三列" Then \'如果内容发生变动的是第三列
    If e.NewValue Is Nothing Then \'如果新值是空白,也就是第三列的内容为空
        e.DataRow("周数") = Nothing \'那么清空此行周数的内容
    Else
        Dim dr As DataRow
        \'否则在产品表查找同名的产品行,将找到的行赋值给变量dr
        dr = DataTables("生产1").Find(("[第三列] = \'" & e.NewValue & "\'")      
        If dr IsNot Nothing Then \'如果找到了同名的产品行,也就是dr不是Nothing
            e.DataRow("周数") = dr("周数")
        End If
    End If
End If



--  作者:有点蓝
--  发布时间:2023/2/10 12:02:00
--  
2个表数据是怎么样的,截图看看。同时说明一下要的结果
--  作者:fx719
--  发布时间:2023/2/10 12:58:00
--  
If e.DataCol.Name = "工单单号" Then
    Dim nms() As String = {"销售品号","销售品名","销售图号","工单规格","工单数量"}
    If e.NewValue Is Nothing Then
        For Each nm As String In nms
            e.DataRow(nm) = Nothing
        Next
    Else
        Dim dr As DataRow
        dr = DataTables("工单需求").Find("[工单单号] = \'" & e.NewValue & "\'")
        If dr IsNot Nothing \'不为空值
            For Each nm As String In nms
                e.DataRow(nm) = dr(nm)
            Next
        End If
    End If
End If


正式项目用的代码是这个
图片点击可在新窗口打开查看此主题相关图片如下:狐表取左边14位.png
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2023/2/10 13:31:00
--  
dr = DataTables("工单需求").Find("[工单单号] = \'" & left(e.NewValue,14) & "\'")