以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  二个字符串列中找出二个以上相同字符串  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=125903)

--  作者:ZJZK2018
--  发布时间:2018/10/9 15:43:00
--  二个字符串列中找出二个以上相同字符串
二个字符串列中找出二个及以上相同字符串
表A的第一列中有“监理工程,施工工程”等等,如果在表B的第二列中输入一个“监理单位”,如何把表A的第一列中所有含有“监理”的行筛选出来,如果在表B的第二列中输入一个“BBB111”,如何把表A的第一列中所有含有“BBB”的行筛选出来?



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


--  作者:有点甜
--  发布时间:2018/10/9 15:49:00
--  

比如输入 123456,那么就要模糊匹配 12、23、34、45、56 这些字符?

 

Dim str As String = "123456"
Dim filter As String = "1=2"
For i As Integer = 1 To str.length-1
    filter &= " or 第一列 like \'%" & str.SubString(i-1, 2) & "%\'"
Next
msgbox(filter)


--  作者:ZJZK2018
--  发布时间:2018/10/11 11:58:00
--  
下面红色部分代码错在哪里,我的需求是:同时满足三个条件,"企业名称 = \'" & ddr("投标单位") & "\' And 年月 = \'" & dr("信用分月份") & "\'"  和 dt("企业类别").Contains(s) 


    Case "信用联动系数","信用分月份"
        \'\'\'\'\'============计算信用分值=============
        Dim fdr As DataRow = DataTables("招标信息").Find("系统编号 = \'" & dr("系统编号") & "\'")
        If fdr IsNot Nothing Then
            Dim ddrs As List(of DataRow)
            ddrs = DataTables("标录明细").Select("系统编号 = \'" & dr("系统编号") & "\'")
            For Each ddr As DataRow In ddrs
                If dr.IsNull("信用联动系数") = False OrElse dr.IsNull("信用分月份") = False Then
                    For i As Integer = 0 To dr("咨询类型").Length - 2    \'两个字符串中有两个连续字符相同  AA
                        Dim s As String = dr("咨询类型").Substring(i,2)
                        For Each dt As DataRow In DataTables("企业信用分").DataRows
                            If dt("企业类别").Contains(s) Then         \'AA
                                Dim fd As DataRow = DataTables("企业信用分").Find("企业名称 = \'" & ddr("投标单位") & "\' And 年月 = \'" & dr("信用分月份") & "\'")   \' And 企业类别 Like \'%" & s & "%\'")
                                If fd IsNot Nothing Then
                                    If fdr("投标地区") = fd("地区")  Then
                                        ddr("信用分值") = fd("信用分值") * dr("信用联动系数")
                                    End If
                                End If
                            End If
                        Next
                    Next
                Else
                    ddr("信用分值") = Nothing
                End If
            Next
        End If

--  作者:有点甜
--  发布时间:2018/10/11 12:05:00
--  

Dim fd As DataRow = DataTables("企业信用分").Find("企业名称 = \'" & ddr("投标单位") & "\' And 年月 = \'" & dr("信用分月份") & "\'")   \' And 企业类别 Like \'%" & s & "%\'")

 

改成

 

Dim fd As DataRow = DataTables("企业信用分").Find("企业名称 = \'" & ddr("投标单位") & "\' And 年月 = \'" & dr("信用分月份") & "\' And 企业类别 Like \'%" & s & "%\'")


--  作者:ZJZK2018
--  发布时间:2018/10/11 12:21:00
--  
有点甜老师:
改成4楼出来的结果是"企业名称 = \'" & ddr("投标单位") & "\' And 年月 = \'" & dr("信用分月份") & "\'" 这个条件实施了,但And 企业类别 Like \'%" & s & "%\'")不起作用

--  作者:有点甜
--  发布时间:2018/10/11 12:26:00
--  

代码没问题,实例发出来测试