Foxtable(狐表)用户栏目专家坐堂 → 关于集合问题出错-已解决


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

主题:关于集合问题出错-已解决

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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
关于集合问题出错-已解决  发帖心情 Post By:2019/2/23 2:55:00 [只看该作者]

需求是: 先增加一个列名集合,先是4个字符匹配,再3字符匹配,再2字符匹配,如果匹配的字段就移除,不再重复匹配
在表DataColChanged事件中,下面代码出错:

Dim dr As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "名称"
        Dim lst As New List(Of String)
        For Each dc As Col In Tables("招标信息").Cols
            If lst.Contains(dc.Name) = False Then
                lst.Add(dc.Name)
            End If
        Next
        If e.NewValue IsNot Nothing Then
            If e.NewValue.Length >= 4 Then
                For i As Integer = 0 To e.NewValue.Length -4
                    Dim s As String = e.NewValue.Substring(i,4)
                    For Each nm As String In lst
                        If nm.Contains(s) Then
                            dr("标准名称") = nm
                            lst.Remove(nm)
                        End If
                    Next
                Next
            End If
            'msgbox(String.Join("|",lst.ToArray))
            
            If e.NewValue.Length >= 2 Then
                For i As Integer = 0 To e.NewValue.Length -2
                    Dim s As String = e.NewValue.Substring(i,2)
                    For Each nm As String In lst
                        If nm.Contains(s) Then
                            dr("标准名称") = nm
                            lst.Remove(nm)
                        End If
                    Next
                Next
            End If
        End If
End Select

错误提示:

.NET Framework 版本:2.0.50727.8762
Foxtable 版本:2018.10.9.1
错误所在事件:表,招标公告,DataColChanged
详细错误信息:
调用的目标发生了异常。
集合已修改;可能无法执行枚举操作。
[此贴子已经被作者于2019/2/24 11:39:06编辑过]

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


加好友 发短信
等级:超级版主 帖子:110790 积分:563882 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/2/23 8:51:00 [只看该作者]

截图说明一下,列名是怎么样的?匹配什么内容?

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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2019/2/23 10:55:00 [只看该作者]


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


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


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:招标公告及标录.foxdb


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

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


加好友 发短信
等级:超级版主 帖子:110790 积分:563882 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/2/23 11:20:00 [只看该作者]

你的意思是要判断【招标信息】表的列名是否在【招标公告】表的名称里?



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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2019/2/23 11:39:00 [只看该作者]

“招标公告”表中的名称与内容的列的数据是从网页下读取过来,标准名称列数据是根据“名称”列数据与招标信息表中的列名进行匹配得到
[此贴子已经被作者于2019/2/23 11:47:54编辑过]

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


加好友 发短信
等级:超级版主 帖子:110790 积分:563882 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/2/23 11:58:00 [只看该作者]

Select Case e.DataCol.Name
    Case "名称"
        If e.NewValue > "" Then
            If DataTables("招标信息").DataCols.Contains(e.NewValue) Then
                e.DataRow(标准名称) = e.NewValue
            End If
        End If
End Select

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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2019/2/23 15:54:00 [只看该作者]

不是这样的需求是: 
1、先增加一个“招标信息”表的列名集合,
2、当“招标公告”中名称列中增加一个字符时,先是4个连续字符与集合中字符匹配,如果有,则在“标准名称”列中填入,并在集合中移除此字符,
3、再3连续字符匹配,再2字符匹配,依次类推,如果匹配的字段就移除,不再重复匹配

如集合中的字符有:AABB,BBBCD,EEDD,ABCDF,1234
1、当在名称列中输入AABB时,先是4个连续字符与集合中字符匹配,标准名称列就为AABB,集合中移除此字符AABB,此时集合的值为:BBBCD,EEDD,ABCDF,1234
2、当在名称列中输入SABC时,先是4个连续字符与集合中字符匹配,如没有,3个连续字符与集合中字符匹配,SABCABCDF,标准名称为ABCDF,集合中移除此字符
[此贴子已经被作者于2019/2/23 16:14:07编辑过]

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


加好友 发短信
等级:超级版主 帖子:110790 积分:563882 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/2/23 17:29:00 [只看该作者]

没看懂,举几个更具体的例子说明一下

典型的,“招标信息”表有“网上报名日期”和“报名日期起”,假如名称列输入“报名日期”,匹配哪一个?

另外“招标信息”表还有“开标日期”、“录入日期”......假如名称列输入“日期”,又匹配哪一个?

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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2019/2/23 17:47:00 [只看该作者]

“招标信息”表有“网上报名日期”和“报名日期起”,假如名称列输入“报名日期”,如果集合中“报名日期起”排序在先哪么就匹配“报名日期起”,因为最后手工还要检查一次
“招标信息”表还有“开标日期”、“录入日期”......假如名称列输入“日期”,集合排序中哪个在先就匹配哪个

谢谢!

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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2019/2/24 1:12:00 [只看该作者]

怎么没人理我?

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