以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  有关模糊查找的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=109319)

--  作者:motorcar88
--  发布时间:2017/11/9 14:18:00
--  有关模糊查找的问题
If e.DataCol.Name = "合同日期" Then \'发生变化的是政策日期吗?
    \'在政策表找出该产品
    Dim dr As DataRow 
    dr = DataTables("政策").Find("政策日期 = \'" & e.DataRow("合同日期") & "\'" )
    If dr IsNot Nothing \'如果找到, 则设置各列内容
        e.DataRow("政策日期")= dr("政策日期")
    End If
End If
以上代码只能实现精确查找,但不能模糊匹配。
比如:政策日期有2017-1-1、2017-1-15、2017-2-10,如果合同日期是2017-1-18,期望能自动找到2017-1-15这个政策日期。
如何实现,请各位老师批教。

--  作者:2900819580
--  发布时间:2017/11/9 14:40:00
--  
先找符合日期的,如果找不出来,则将政策日期中少于合同日期的筛选出来,再排序,找到第一个,
--  作者:有点甜
--  发布时间:2017/11/9 15:21:00
--  

参考

 

http://www.foxtable.com/webhelp/scr/0396.htm

 


--  作者:motorcar88
--  发布时间:2017/11/9 15:24:00
--  
我是初学者,这样的代码如何写?请老师帮帮忙。
--  作者:有点甜
--  发布时间:2017/11/9 15:38:00
--  

 

If e.DataCol.Name = "合同日期" Then \'发生变化的是政策日期吗?
    \'在政策表找出该产品
    Dim dr As DataRow 
    dr = DataTables("政策").Find("政策日期 <= \'" & e.DataRow("合同日期") & "\'", "政策日期 desc")
    If dr IsNot Nothing \'如果找到, 则设置各列内容
        e.DataRow("政策日期")= dr("政策日期")
    End If
End If
[此贴子已经被作者于2017/11/9 15:38:32编辑过]

--  作者:motorcar88
--  发布时间:2017/11/9 15:42:00
--  
非常感谢您,但这样的代码如何写?是否在我发上来的代码上加代码?请赐教!
--  作者:有点甜
--  发布时间:2017/11/9 15:57:00
--  

直接用5楼的代码替换你原来的,即可。


--  作者:motorcar88
--  发布时间:2017/11/9 15:57:00
--  
非常感谢各位老师!一开始我以为很复杂,老师写的代码如此简结,太棒了!我学习的信心立刻飙升。买了个开发版一直很少用,现在要多花时间弄弄了!