以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  类似于EXCEL中的XLOOKUP  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=187233)

--  作者:atlas77
--  发布时间:2023/7/1 21:33:00
--  类似于EXCEL中的XLOOKUP
表A   第一列                  第二列                                第三列
        1                           海尔                                  空调
        2                           海尔                                 洗衣机
        3                          海尔                                   冰箱
        4                          美的                                   空调
        5                          美的                                  洗衣机
        6                           美的                                  冰箱
        7                          格力                                  微波炉
        8                           格力                                  风扇
        9                          格力                                   空调
   .......                         .......                                  .......
表B            第四列                          第五列         
        杭州美的智能冰箱GBX                   
          重庆海尔一匹空调                     
         上海格力电风扇


                    

如何在表B第五列输入表A中对应的序号?(前面的帖子我表达有误,请高手指教,给出代码)
[此贴子已经被作者于2023/7/3 16:11:29编辑过]

--  作者:有点蓝
--  发布时间:2023/7/2 20:26:00
--  
参考:http://www.foxtable.com/webhelp/topics/1451.htm
--  作者:atlas77
--  发布时间:2023/7/3 16:12:00
--  
帖子已改过。请您再指教!
--  作者:有点蓝
--  发布时间:2023/7/3 16:32:00
--  
一样的用法,改为使用like查询即可
--  作者:atlas77
--  发布时间:2023/7/3 16:52:00
--  
LIKE查询总是引用列内容有误,版主写个代码例子吧
--  作者:有点蓝
--  发布时间:2023/7/3 17:12:00
--  
If e.DataCol.Name = "第四列" Then \'如果内容发生变动的是品名列
    If e.NewValue Is Nothing Then \'如果新值是空白,也就是品名列的内容为空
        e.
DataRow("
第五列") = Nothing \'那么清空此行单价列的内容
    
Else
        Dim
 dr As DataRow
        
\'否则在产品表查找同名的产品行,将找到的行赋值给变量dr
        dr = 
DataTables("表A").Find("\'" & 
e.NewValue & "\' like \'%\' + [第二列] +\'%\'  and \'" & e.NewValue & "\' like \'%\' + [第三列] +\'%\'")
        If
 dr IsNot Nothing Then \'如果找到了同名的产品行,也就是dr不是Nothing
            e.
DataRow("
第五列") = dr("第一列")
        End
 If
    End
 If
End
 If

--  作者:atlas77
--  发布时间:2023/7/3 17:30:00
--  
System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.Data.EvaluateException: 无法在 System.String 和 System.DBNull 上执行“Like”操作。


没遇到过,啥问题

--  作者:有点蓝
--  发布时间:2023/7/3 17:37:00
--  
dr = DataTables("表A").Find("\'" & e.NewValue & "\' like \'%\' + isnull([第二列],\'\') +\'%\'  and \'" & e.NewValue & "\' like \'%\' + isnull([第三列],\'\') +\'%\'")
--  作者:atlas77
--  发布时间:2023/7/3 18:10:00
--  
like \'%\' + isnull([第二列],\'\') +\'%\'  ,麻烦解释一下代码为什么这样写
[此贴子已经被作者于2023/7/3 18:17:36编辑过]

--  作者:有点蓝
--  发布时间:2023/7/3 20:08:00
--  
这2列有空值,需要转换为空字符串,才能使用like