Foxtable(狐表)用户栏目专家坐堂 → [求助]能不能批量替换?


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

主题:[求助]能不能批量替换?

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


加好友 发短信
等级:四尾狐 帖子:962 积分:8505 威望:0 精华:0 注册:2012/10/3 13:25:00
[求助]能不能批量替换?  发帖心情 Post By:2016/9/12 12:30:00 [显示全部帖子]

帮助里没找到相近代码,请版主帮忙!谢谢!

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


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


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






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

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


加好友 发短信
等级:四尾狐 帖子:962 积分:8505 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2016/9/12 14:29:00 [显示全部帖子]

就是针对同一行中不同单元格内的多个字符串,进行的批量替换,我重新上传了图和附件。

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


加好友 发短信
等级:四尾狐 帖子:962 积分:8505 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2016/9/12 16:56:00 [显示全部帖子]

版主,我的意思是窗口左侧的5个文本框都是需要替换的内容,而且都是来自同一行的不同字符串。窗口右边的5个文本框都是替换后的字符串。(窗口中间是向右的剪头,没显示出来)

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

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


加好友 发短信
等级:四尾狐 帖子:962 积分:8505 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By: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

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


加好友 发短信
等级:四尾狐 帖子:962 积分:8505 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By: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

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


加好友 发短信
等级:四尾狐 帖子:962 积分:8505 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2016/9/14 21:17:00 [显示全部帖子]

非常感谢版主!祝版主仲秋节快乐!
还想请教个代码:
假如当前行的“名称”列,这个单元格的内容是:

"名称1:AAAA
名称2:BBBB
名称3:CCCC
......"
点击按钮,打开替换窗口,"TextBox1"自动提取  当前行“名称”列的  单元格中“名称1:”后面的字符串“AAAA”;
                                  "TextBox3"自动提取  当前行“名称”列的  单元格中“名称2:”后面的字符串“BBBB”;
                                  ......
见图:

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


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


加好友 发短信
等级:四尾狐 帖子:962 积分:8505 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2016/9/14 21:55:00 [显示全部帖子]

我把代码改动后放入窗口的afterload事件,显示“索引超出了数组界限。
还要怎么改动一下代码:

Dim dr As Row = CurrentTable.Current
If dr IsNot Nothing AndAlso dr.IsNull("第一列") = False Then
    Dim arr() As String = dr("第一列").replace(chr(10),"").split(chr(13))
    For i As Integer = 0 To arr.Length - 1   '遍历当前表的所有列
        Dim value() As String = arr(i).Split(":")
        e.Form.Controls("TextBox" & i*2+1).Text = value(1)
        Next
End If

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


加好友 发短信
等级:四尾狐 帖子:962 积分:8505 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2016/9/14 22:08:00 [显示全部帖子]

行了,谢谢版主!

 回到顶部