以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]能不能批量替换?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=90417)

--  作者:jyh7081
--  发布时间:2016/9/12 12:30:00
--  [求助]能不能批量替换?
帮助里没找到相近代码,请版主帮忙!谢谢!

选中当前行,对当前行中的多处字符串进行批量替换,应该是匹配内容方式吧。


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


附件:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:批量替换.table






[此贴子已经被作者于2016/9/12 14:26:26编辑过]

--  作者:有点蓝
--  发布时间:2016/9/12 14:07:00
--  
没看懂要做什么
--  作者:jyh7081
--  发布时间:2016/9/12 14:29:00
--  
就是针对同一行中不同单元格内的多个字符串,进行的批量替换,我重新上传了图和附件。
--  作者:有点蓝
--  发布时间:2016/9/12 14:45:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:批量替换(1).table


--  作者:jyh7081
--  发布时间:2016/9/12 16:56:00
--  
版主,我的意思是窗口左侧的5个文本框都是需要替换的内容,而且都是来自同一行的不同字符串。窗口右边的5个文本框都是替换后的字符串。(窗口中间是向右的剪头,没显示出来)

步骤是:1、选中  行(替换范围);
           2、弹出替换窗口;
           3、在左侧文本框编辑需替换的字符串,右侧文本框编辑替换后的字符串;
           4、点击替换按钮,一次性完成对该行的多处字符串的替换。
[此贴子已经被作者于2016/9/12 16:57:19编辑过]

--  作者:有点蓝
--  发布时间:2016/9/12 17:06:00
--  
Dim dr As Row = Tables("表A").Current
Dim cls() As String = {"第一列","第二列","第三列"}
For Each c As String In cls
    dr(c) = dr(c).replace(e.Form.Controls("TextBox1").Text,e.Form.Controls("TextBox2").Text)
    dr(c) = dr(c).replace(e.Form.Controls("TextBox3").Text,e.Form.Controls("TextBox4").Text)
Next

--  作者:jyh7081
--  发布时间:2016/9/12 19:57:00
--  
谢谢版主!正是我要的效果。
我想把代码改为针对当前表,当前行的所有列,有一句代码不会写(斜体字),求帮助:

Dim dr As Row = CurrentTable.Current  \'定义dr为当前表当前行

For Each cls As Col In CurrentTable.Cols   \'遍历当前表的所有列

Next

For Each c As String In cls
    dr(c) = dr(c).replace(e.Form.Controls("TextBox1").Text,e.Form.Controls("TextBox2").Text)
    dr(c) = dr(c).replace(e.Form.Controls("TextBox3").Text,e.Form.Controls("TextBox4").Text)
Next

--  作者:有点蓝
--  发布时间:2016/9/12 20:24:00
--  
For Each c As Col In CurrentTable.Cols   \'遍历当前表的所有列
    dr(c.name) = dr(c.name).replace(e.Form.Controls("TextBox1").Text,e.Form.Controls("TextBox2").Text)
    dr(c.name) = dr(c.name).replace(e.Form.Controls("TextBox3").Text,e.Form.Controls("TextBox4").Text)
Next


--  作者:jyh7081
--  发布时间:2016/9/14 20:24:00
--  
蓝版主,您好。如果在窗口中的文本框只填写一部分,比如窗口中有五行可以替换的文本框,假如只填写一部分,部分空着不填,怎样让代码继续运行?

现在是如果窗口中的文本框不填满,就提示:
“错误所在事件:窗口,批量替换,Button1,Click
详细错误信息:
字符串的长度不能为零。
参数名: oldValue”

Dim dr As Row = CurrentTable.Current
For Each c As Col In CurrentTable.Cols   \'遍历当前表的所有列
    dr(c.name) = dr(c.name).replace(e.Form.Controls("TextBox1").Text,e.Form.Controls("TextBox2").Text)
    dr(c.name) = dr(c.name).replace(e.Form.Controls("TextBox3").Text,e.Form.Controls("TextBox4").Text)
    dr(c.name) = dr(c.name).replace(e.Form.Controls("TextBox5").Text,e.Form.Controls("TextBox6").Text)
    dr(c.name) = dr(c.name).replace(e.Form.Controls("TextBox7").Text,e.Form.Controls("TextBox8").Text)
    dr(c.name) = dr(c.name).replace(e.Form.Controls("TextBox9").Text,e.Form.Controls("TextBox10").Text)
Next

--  作者:有点蓝
--  发布时间:2016/9/14 20:35:00
--  
Dim dr As Row = CurrentTable.Current
Dim t1 As String = e.Form.Controls("TextBox1").Text
Dim t2 As String = e.Form.Controls("TextBox2").Text
Dim t3 As
......
For Each c As Col In CurrentTable.Cols   \'遍历当前表的所有列
    Dim value As String = dr(c.name)
    If value > "" Then
        If t1 > "" Then value = value.replace(t1,t2)
        If t3 > "" Then value = value.replace(t3,t4)
        If t5 > "" 
        ......
        dr(c.name) = value
    End If
Next

省略号自己补充完整