以文本方式查看主题

-  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=142006)

--  作者:tkxffb
--  发布时间:2019/10/16 12:12:00
--  [求助]如何在删除表二人员时自动删除表一多行中该人员姓名

各位老师好:
现在有表一和表二两个表,附图如下,当删除表二张三这一行时想自动删除表一中各行张三的姓名(包括姓名后或姓名前的逗号),请问代码如何写?

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

图片点击可在新窗口打开查看此主题相关图片如下:表二8.jpg
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2019/10/16 13:38:00
--  
用法一样:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=141945&skin=0
--  作者:tkxffb
--  发布时间:2019/10/16 20:35:00
--  
有点蓝老师你好,使用你在上面那个帖子中发的代码提示错误,改成下面的之后可以运行,但只删除表一第二行(就是姓名在单元格字段中间位置)张三的名字,其他两行的张三名字删除不了,不知道问题出在哪里,麻烦你再看看。另外,表二甲列当前行的值想用表达式表示,也请指教一下。谢谢

Dim dr As DataRow = DataTables("表一").find(" A列 Like \'%,张三,%\' ")    
If dr IsNot Nothing Then
    dr("A列") = ("," & dr("A列") & ",").replace(",张三,",",").trim(",")   
End If
[此贴子已经被作者于2019/10/16 20:38:24编辑过]

--  作者:tkxffb
--  发布时间:2019/10/17 8:00:00
--  
为什么没人回复?请各位版主指导一下呗
下面是根据有点蓝版主的指导对代码的改进,用循环语句,把代码改成下面的样子,能够自动删除多行了

For Each dt1 As DataTable In DataTables  
    Dim dr1 As DataRow = DataTables("表一").find(" A列 Like \'%,张三,%\' ")  
    If dr1 IsNot Nothing Then
        dr1("A列") = (dr1("A列") & ",").replace(",张三,",",").trim(",")
    End If
Next
但仍然有一个问题,无法使用表达式。我写的使用表达式的代码是:
For Each dt1 As DataTable In DataTables    
    Dim z As String = Tables("表二").Current("甲列")
    Dim dr1 As DataRow = DataTables("表一").find(" A列 Like \'%,“& z &”,%\' ")  
    If dr1 IsNot Nothing Then
        dr1("A列") = (dr1("A列") & ",").replace(",“& z &”,",",").trim(",")
    End If
Next
请问,replace的属性是不是不支持使用表达式?怎么在这段代码中用表达式表达表二某行甲列的值?

--  作者:有点蓝
--  发布时间:2019/10/17 8:28:00
--  
find改为使用select:http://www.foxtable.com/webhelp/topics/0400.htm,代码自己思考应该怎么改

我们往往提供的是处理逻辑和思路,要学会有自己的思考,然后结合项目使用。而不是只会抄

--  作者:tkxffb
--  发布时间:2019/10/17 8:53:00
--  
好的,谢谢