Foxtable(狐表)用户栏目专家坐堂 → 输出问题


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

主题:输出问题

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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
输出问题  发帖心情 Post By:2019/2/13 10:39:00 [只看该作者]

Dim s1 As List(of String)
Dim s2 As List(of String)
S1 = DataTables("专利交易库").GetValues("专利名称")
S2= DataTables("专利交易库").GetValues("交易要求")
For Each s22 As String In s2
    For Each s11 As String In s1
        Dim count As Integer = s11.Length
        For i As Integer = count -2 To 1 Step -1
            For j As Integer = count - i To 0 Step -1
                Dim s As String = s11.SubString(j,i)
                If s22.Contains(s) And i >1 Then
                    Dim dr As  DataRow = DataTables("专利交易库").Find("交易要求 = '" & s22 & "'") 
                      Dim ddr As  DataRow = DataTables("专利交易库").Find("专利名称 = '" & s11 & "'") 
                        If dr IsNot Nothing And ddr IsNot Nothing Then  
                    output.show("可能与买方QQ:" & dr("qq") & "要求:" & s22 & "           " & "匹配的QQ:" & ddr("QQ") & "专利是:" & s11 & "                 匹配有" & i & "个" & "  " & "          匹配的字符是:" & s & "              " & "相似度:" & Format(i/s11.Length,"#0.00%") )
                    output.show("")
                    output.show("")
                          End If            
                End If
            Next
        Next
    Next
Next

这段代码目的是在专利交易库中查询和交易要求能匹配的专利名称,现在遇见输出问题,计划将输出结果能达到两个目的1、直接输出为一个Excel文件,此文件的按输出要求"可能与买方QQ:" & dr("qq") & "要求:" & s22 & "           " & "匹配的QQ:" & ddr("QQ") & "专利是:" & s11 & "                 匹配有" & i & "个" & "  " & "          匹配的字符是:" & s & "              " & "相似度:" & Format(i/s11.Length,"#0.00%") )格式。2、或者能直接输出项目项目中直接输出为哪怕是一个临时表,相应字段也按"可能与买方QQ:" & dr("qq") & "要求:" & s22 & "           " & "匹配的QQ:" & ddr("QQ") & "专利是:" & s11 & "                 匹配有" & i & "个" & "  " & "          匹配的字符是:" & s & "              " & "相似度:" & Format(i/s11.Length,"#0.00%") )这样
图片点击可在新窗口打开查看此主题相关图片如下:无标题.png
图片点击可在新窗口打开查看

另外,如图中画圈地方有重复,如何去除,请教下能做代码优化,几天了没能解决
图片点击可在新窗口打开查看此主题相关图片如下:无标题.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2019/2/13 10:47:44编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/2/13 10:42:00 [只看该作者]

1、输出为txt,如

 

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

 

2、操作excel,参考

 

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

 

3、生成临时表,参考

 

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

 


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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
  发帖心情 Post By:2019/2/13 10:54:00 [只看该作者]

谢谢!还有另外加了个问题

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/2/13 10:58:00 [只看该作者]

比如

 

Dim s1 As List(of String)
Dim s2 As List(of String)
S1 = DataTables("专利交易库").GetValues("专利名称")
S2= DataTables("专利交易库").GetValues("交易要求")
For Each s22 As String In s2
    For Each s11 As String In s1
        Dim count As Integer = s11.Length
        For i As Integer = count -2 To 1 Step -1
            For j As Integer = count - i To 0 Step -1
                Dim s As String = s11.SubString(j,i)
                If s22.Contains(s) And i >1 Then
                    Dim dr As  DataRow = DataTables("专利交易库").Find("交易要求 = '" & s22 & "'") 
                      Dim ddr As  DataRow = DataTables("专利交易库").Find("专利名称 = '" & s11 & "'") 
                        If dr IsNot Nothing And ddr IsNot Nothing Then  
                    output.show("可能与买方QQ:" & dr("qq") & "要求:" & s22 & "           " & "匹配的QQ:" & ddr("QQ") & "专利是:" & s11 & "                 匹配有" & i & "个" & "  " & "          匹配的字符是:" & s & "              " & "相似度:" & Format(i/s11.Length,"#0.00%") )
                    output.show("")
                    output.show("")
exit for
                          End If            
                End If
            Next
        Next
    Next
Next

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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
  发帖心情 Post By:2019/2/13 11:09:00 [只看该作者]

还是有重复
图片点击可在新窗口打开查看此主题相关图片如下:无标题.png
图片点击可在新窗口打开查看


另外再请教下,contain  like  find 在字符比较方面的具体差别。能详细说说嘛?哪怕是用一两段语言文字来举例。
实在是工作急需
给您个能直接复制黏贴的文字
能与买方QQ:302910554要求:1、LED光源  相关授权未下证发明专利!           匹配的QQ:3003088541专利是:一种基于LED探照功能的河道堤坝垃圾拾取装置                 匹配有3个            匹配的字符是:LED              相似度:13.64%


可能与买方QQ:302910554要求:1、LED光源  相关授权未下证发明专利!           匹配的QQ:2881996703专利是:一种利于热量传导的LED车灯                 匹配有3个            匹配的字符是:LED              相似度:21.43%


可能与买方QQ:3337549656要求:1、可降解高分子材料、一次性餐具相关高分子材料、           匹配的QQ:1019283804专利是:一种高分子转光材料的搅拌混合装置                 匹配有3个            匹配的字符是:高分子              相似度:18.75%


可能与买方QQ:771982542要求:1、社区门禁,人脸识别门禁,门禁一体机等,未交费发明           匹配的QQ:2851715030专利是:一种具有人脸识别功能的智能型防盗门                 匹配有4个            匹配的字符是:人脸识别              相似度:23.53%


可能与买方QQ:771982542要求:1、社区门禁,人脸识别门禁,门禁一体机等,未交费发明           匹配的QQ:2851715030专利是:一种具有人脸识别功能的智能型防盗门                 匹配有3个            匹配的字符是:脸识别              相似度:17.65%


可能与买方QQ:1151496018要求:1.     单冻机,冷冻辣椒  加工工艺 、单冻机  关键字:冻机、单冻机~           匹配的QQ:3431099355专利是:一种机械工厂用的小型机械加工工具清洗设备                 匹配有3个            匹配的字符是:加工工              相似度:15.00%


可能与买方QQ:2832093389要求:1.导电橡胶及橡胶混炼,硫化方面实用新型多件,状态不限           匹配的QQ:1019283804专利是:一种电动车用新型集成芯片设备                 匹配有3个            匹配的字符是:用新型              相似度:21.43%


可能与买方QQ:1416460516要求:1.批量求购工业、机械、新能源、通信领域,申请日在15年以后的下证发明,价格在4500左右,有证书原件,年费正常,来得及费减           匹配的QQ:3003088541专利是:一种便于拆分的新能源汽车电池夹紧装置                 匹配有3个            匹配的字符是:新能源              相似度:16.67%


可能与买方QQ:1416460516要求:1.批量求购工业、机械、新能源、通信领域,申请日在15年以后的下证发明,价格在4500左右,有证书原件,年费正常,来得及费减           匹配的QQ:2851715030专利是:一种基于物联网的方便休息的新能源汽车                 匹配有3个            匹配的字符是:新能源              相似度:16.67%


可能与买方QQ:1416460516要求:1.批量求购工业、机械、新能源、通信领域,申请日在15年以后的下证发明,价格在4500左右,有证书原件,年费正常,来得及费减           匹配的QQ:2851715030专利是:一种具有雨水收集和绿化带浇水功能的新能源洒水车                 匹配有3个            匹配的字符是:新能源              相似度:13.04%


可能与买方QQ:1416460516要求:1.批量求购工业、机械、新能源、通信领域,申请日在15年以后的下证发明,价格在4500左右,有证书原件,年费正常,来得及费减           匹配的QQ:3003088541专利是:一种生活用太阳能新能源供电装置                 匹配有3个            匹配的字符是:新能源              相似度:20.00%


[此贴子已经被作者于2019/2/13 11:13:13编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/2/13 11:16:00 [只看该作者]

Dim s1 As List(of String)
Dim s2 As List(of String)
S1 = DataTables("专利交易库").GetValues("专利名称")
S2= DataTables("专利交易库").GetValues("交易要求")
For Each s22 As String In s2
    For Each s11 As String In s1
        Dim count As Integer = s11.Length
        Dim flag As Boolean = False
        For i As Integer = count -2 To 1 Step -1
            For j As Integer = count - i To 0 Step -1
                Dim s As String = s11.SubString(j,i)
                If s22.Contains(s) And i >1 Then
                    Dim dr As  DataRow = DataTables("专利交易库").Find("交易要求 = '" & s22 & "'")
                    Dim ddr As  DataRow = DataTables("专利交易库").Find("专利名称 = '" & s11 & "'")
                    If dr IsNot Nothing And ddr IsNot Nothing Then
                        output.show("可能与买方QQ:" & dr("qq") & "要求:" & s22 & "           " & "匹配的QQ:" & ddr("QQ") & "专利是:" & s11 & "                 匹配有" & i & "个" & "  " & "          匹配的字符是:" & s & "              " & "相似度:" & Format(i/s11.Length,"#0.00%") )
                        output.show("")
                        output.show("")
                        flag = True
                        Exit For
                    End If
                End If
            Next
            If flag = True Then Exit For
        Next
    Next
Next

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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
  发帖心情 Post By:2019/2/13 13:02:00 [只看该作者]

Dim s1 As List(of String)
Dim dt As Date = Date.Now
Dim s2 As List(of String)
Dim m As Integer =0
S1 = DataTables("专利交易库").GetValues("专利名称")
S2= DataTables("专利交易库").GetValues("交易要求")
For Each s22 As String In s2
    For Each s11 As String In s1
        Dim count As Integer = s11.Length
             Dim flag As Boolean = False
        For i As Integer = count -2 To 1 Step -1
            For j As Integer = count - i To 0 Step -1
                Dim s As String = s11.SubString(j,i)
                   If s22.Contains(s) And i >1 And S Like "?[!生产装置设备一种产品实用新型方法用于的]" Then
                      
                    Dim dr As  DataRow = DataTables("专利交易库").Find("交易要求 = '" & s22 & "'") 
                      Dim ddr As  DataRow = DataTables("专利交易库").Find("专利名称 = '" & s11 & "'") 
                        If dr IsNot Nothing And ddr IsNot Nothing Then  
                              m=m+1
                    output.show("可能与买方QQ:" & dr("qq") & "要求:" & s22 & "           " & "匹配的QQ:" & ddr("QQ") & "专利是:" & s11 & "                 匹配有" & i & "个" & "  " & "          匹配的字符是:" & s & "              " & "相似度:" & Format(i/s11.Length,"#0.00%") )
                    output.show("")
                    output.show("")
                         flag = True
                                  Exit For
                          End If            
                End If
If flag = True Then Exit For
            Next
        Next
    Next

Next

output.show("")
output.show("")
output.show("共比较  " & m &  "  条数据")
Output.Show("共耗时  " & (Date.now - dt).TotalSeconds & " 秒") 

共比较  1973  条数据
共耗时  120.339883 秒
  这个运算速度慢呐,怎么优化
[此贴子已经被作者于2019/2/13 13:14:00编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/2/13 14:39:00 [只看该作者]

1、循环2000行,再循环2000行,就是 400000 次,然后还循环每一个字符,假如每次10个字符,那就是 40万*10*10=4千万 次比较,肯定比较慢。

 

2、你试试把find去掉测试

 

Dim s1 As List(of String)
Dim dt As Date = Date.Now
Dim s2 As List(of String)
Dim m As Integer =0
S1 = DataTables("专利交易库").GetValues("专利名称")
S2= DataTables("专利交易库").GetValues("交易要求")
For Each s22 As String In s2
    For Each s11 As String In s1
        Dim count As Integer = s11.Length
        Dim flag As Boolean = False
        For i As Integer = count -2 To 1 Step -1
            For j As Integer = count - i To 0 Step -1
                Dim s As String = s11.SubString(j,i)
                If s22.Contains(s) And i >1 And S Like "?[!生产装置设备一种产品实用新型方法用于的]" Then
                   
                    'Dim dr As  DataRow = DataTables("专利交易库").Find("交易要求 = '" & s22 & "'")
                    'Dim ddr As  DataRow = DataTables("专利交易库").Find("专利名称 = '" & s11 & "'")
                    'If dr IsNot Nothing And ddr IsNot Nothing Then
                        m=m+1
                        output.show("可能与买方QQ:" & "" & "要求:" & s22 & "           " & "匹配的QQ:" & "" & "专利是:" & s11 & "                 匹配有" & i & "个" & "  " & "          匹配的字符是:" & s & "              " & "相似度:" & Format(i/s11.Length,"#0.00%") )
                        output.show("")
                        output.show("")
                        flag = True
                        Exit For
                    'End If
                End If
                If flag = True Then Exit For
            Next
        Next
    Next
   
   
Next


output.show("")
output.show("")
output.show("共比较  " & m &  "  条数据")
Output.Show("共耗时  " & (Date.now - dt).TotalSeconds & " 秒")


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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
  发帖心情 Post By:2019/2/13 14:59:00 [只看该作者]

共比较  1710  条数据
共耗时  117.7257335 秒

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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
  发帖心情 Post By:2019/2/13 15:00:00 [只看该作者]

共比较  1710  条数据
共耗时  117.7257335 秒

另外S Like "?[!生产装置设备一种产品实用新型方法用于的]" 这句话意思是  S如果是“生产装置设备一种产品实用新型方法用于的“”]中的任何一个或多个字符均退出比较循环,对吗


[此贴子已经被作者于2019/2/13 15:06:23编辑过]

 回到顶部
总数 12 1 2 下一页