以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何提取语句关键词  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=194803)

--  作者:timber83
--  发布时间:2025/1/16 10:08:00
--  如何提取语句关键词
表A  
   序号                 语句                                                  关键词
Q0001 企业未按规定设置特种设备安全管理机构
Q0002 企业未按规定配备特种设备安全管理负责人
Q0003 企业未按规定配备专职特种设备安全管理员    


表B 
 序号           关键词                                                       
1                企业
2                未按规定设置
3                特种设备
4                安全管理
5                机构
6                未按规定配备
如何将表A每一行语句中包含表A的关键词提取对应行的关键词的列中, 形成如下结果
   序号                 语句                                                  关键词
Q0001 企业未按规定设置特种设备安全管理机构             企业,未按规定设置,特种设备,安全管理,机构
Q0002 企业未按规定配备特种设备安全管理负责人          企业,未按规定配备,特种设备,安全管理,
Q0003 企业未按规定配备专职特种设备安全管理员          企业,未按规定配备,特种设备,安全管理,







                                                               
 

--  作者:y2287958
--  发布时间:2025/1/16 10:15:00
--  
上例子
--  作者:有点蓝
--  发布时间:2025/1/16 10:17:00
--  
表A,datacolchanged事件

If e.DataCol.name = "语句" Then
    If e.DataRow.isnull("语句") Then
        e.DataRow("关键词") = Nothing
    Else
        Dim s As String = DataTables("表B").GetComboListString("关键词", "\'" & e.newvalue & "\' like \'%\' + 关键词 + \'%\'")
        e.DataRow("关键词") = s.Replace("|", ",")
    End If
End If

--  作者:timber83
--  发布时间:2025/1/16 10:17:00
--  
 这是结果例子
 序号                 语句                                                                                  关键词
Q0001           企业未按规定设置特种设备安全管理机构             企业,未按规定设置,特种设备,安全管理,机构 
Q0002 企业未按规定配备特种设备安全管理负责人          企业,未按规定配备,特种设备,安全管理,
Q0003 企业未按规定配备专职特种设备安全管理员          企业,未按规定配备,特种设备,安全管理,

--  作者:y2287958
--  发布时间:2025/1/16 10:22:00
--  
Output.Show(String.Join(",", "企业,未按规定设置,特种设备,安全管理,机构,未按规定配备".Split(",").
Where(Function(元素) regex.IsMatch("企业未按规定设置特种设备安全管理机构", 元素))))

--  作者:timber83
--  发布时间:2025/1/16 10:59:00
--  
运行错误提示:
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2024.11.1.1
错误所在事件:表,特征, DataColChanged
详细错误信息:
调用的目标发生了异常。
无法在 System.String 和 System.DBNull 上执行“Like”操作。

--  作者:timber83
--  发布时间:2025/1/16 11:09:00
--  
运行错误提示:
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2024.11.1.1
错误所在事件:表,特征, DataColChanged
详细错误信息:
调用的目标发生了异常。
无法在 System.String 和 System.DBNull 上执行“Like”操作。

--  作者:有点蓝
--  发布时间:2025/1/16 11:27:00
--  
试试

Dim s As String = DataTables("表B").GetComboListString("关键词", "\'" & e.newvalue & "\' like \'%\' + 关键词 + \'%\' and 关键词 is not null")

--  作者:timber83
--  发布时间:2025/1/16 11:31:00
--  
还是运行错误:
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2024.11.1.1
错误所在事件:表,特征, DataColChanged
详细错误信息:
调用的目标发生了异常。
无法在 System.String 和 System.DBNull 上执行“Like”操作。

是不是like 不能用?

--  作者:有点蓝
--  发布时间:2025/1/16 11:41:00
--  
再试试

Dim s As String = DataTables("表B").GetComboListString("关键词", "\'" & e.newvalue & "\' like \'%\' + isnull(关键词,\'null\') + \'%\'")