以文本方式查看主题

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

--  作者:lgj716330
--  发布时间:2020/1/10 22:07:00
--  [求助]字符串截取后填充
表A的“摘要”列是以下格式
aaaaa(bb)
想把“(”前面部分,即这里的aaaaa字符截取出来,然后筛选出不重复的内容填充到表B的"摘要"列
用Split分离出来后如何填充

--  作者:有点蓝
--  发布时间:2020/1/10 22:22:00
--  
添加一个临时的辅助列,datacolchanged事件用Split分离出来的aaaaa录入辅助列,根据辅助列取不重复的内容填充即可
--  作者:lgj716330
--  发布时间:2020/1/10 22:37:00
--  
想过用这种方法,表A用的是数据库中的视图,只是不想加载进来,想直接用窗口按钮实现

[此贴子已经被作者于2020/1/10 22:37:40编辑过]

--  作者:有点蓝
--  发布时间:2020/1/10 23:04:00
--  
肯定要加载数据,没有办法使用SQL直接处理,就算可以效率也比加载数据处理要低。如果数据量大,经常要这样用,建议还是添加辅助列把aaaaa这种数据  永久保存下来
--  作者:lgj716330
--  发布时间:2020/1/11 12:09:00
--  
If e.DataCol.Name = "摘要" Then 
Dim zy As String = e.DataRow("摘要") 
Dim zys() As String = zy.Split("(")
    If e.DataRow.IsNull("摘要") Then 
        e.DataRow("摘要类别") = Nothing 
    Else
        e.DataRow("摘要类别") =zys(0) 
End If
End If

Split("(")没分离

If e.DataCol.Name = "摘要"
    If e.NewValue = Nothing Then
        e.DataRow("摘要类别") = Nothing
    Else
        Dim ary() As String = e.NewValue.split("(")
        e.DataRow("摘要类别") = ary(0)
    End If
End If

以上也不行,没起作用
[此贴子已经被作者于2020/1/11 12:37:50编辑过]

--  作者:有点蓝
--  发布时间:2020/1/11 13:46:00
--  
摘要是表达式列?

If e.DataCol.Name = "摘要"
    If e.DataRow.isnull("摘要") Then
        e.DataRow("摘要类别") = Nothing
    Else
        Dim ary() As String = e.NewValue.split("(")
        e.DataRow("摘要类别") = ary(0)
    End If
End If

--  作者:lgj716330
--  发布时间:2020/1/12 8:53:00
--  
没有表达式列
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目9.foxdb



--  作者:有点蓝
--  发布时间:2020/1/12 20:34:00
--  
单元格录入的是全角的括号


\'\'\'
If e.DataCol.Name = "第一列" ‘注意上面3个单引号:http://www.foxtable.com/webhelp/topics/1273.htm
    If e.DataRow.isnull("第一列") Then
        e.DataRow("第二列") = Nothing
    Else
        Dim ary() As String = e.NewValue.replace("(","(").split("(")
        e.DataRow("第二列") = ary(0)
    End If
End If