以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]分列代码怎么写?split  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=1324)

--  作者:mr725
--  发布时间:2008/12/5 16:24:00
--  [求助]分列代码怎么写?split
求C 、D、E列的代码?

图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2008-12-5 16:25:49编辑过]

--  作者:kylin
--  发布时间:2008/12/5 16:33:00
--  

Split

用指定的分隔符将字符串分隔成一个字符串数组。

语法:

Split(Value)

Value: 用于分割字符串的字符。

例如:

Dim Multi As String = "ab|cd|ef"
Dim
Values() as String
Values
= Multi.split("|")
For
Index As Integer = 0 To Values.Length - 1
    Output.Show(Values(Index
))
Next

在命令窗口执行上述代码之后,输出结果是:

ab
cd
ef


--  作者:kylin
--  发布时间:2008/12/5 16:35:00
--  

建议在datacolchanged事件中
if e.datacol.name="B" then 

   Dim Multi As String = e.datarow("B")
   Dim
Values() as String
   Values
= Multi.split("|")
   e.datarow("B")=
Values(0
)
   e.datarow("C")=Values(1)
   e.datarow("D")=Values(2)
end if

[此贴子已经被作者于2008-12-5 16:40:56编辑过]

--  作者:mr725
--  发布时间:2008/12/5 16:42:00
--  
谢谢!~ 
--  作者:mr725
--  发布时间:2008/12/5 17:15:00
--  
datacolchanged事件中:下面代码对吗?

If e.DataCol.Name = "B" Then
    If e.NewValue Is Nothing Then
        e.DataRow("C") = Nothing
        e.DataRow("D") = Nothing
        e.DataRow("E") = Nothing
    Else 
        Dim Multi As string = Tables("当前表").Current("B") 
        Dim Values as String()
        Values = "B".split("-")
        For Index As Integer = 0 To Values.Length - 1
            e.Datarow("C") = (Values(0)) 
            e.Datarow("D") = (Values(1)) 
            e.Datarow("E") = (Values(2))  

        Next       
    End if
End if
[此贴子已经被作者于2008-12-5 18:17:53编辑过]

--  作者:mr725
--  发布时间:2008/12/5 18:28:00
--  
以下是引用kylin在2008-12-5 16:35:00的发言:

建议在datacolchanged事件中
if e.datacol.name="B" then 

   Dim Multi As String = e.datarow("B")
   Dim
Values() as String
   Values
= Multi.split("|")
   e.datarow("B")=
Values(0
)
   e.datarow("C")=Values(1)
   e.datarow("D")=Values(2)
end if

[此贴子已经被作者于2008-12-5 16:40:56编辑过]

B列,不变,每段分到C、D、E列中,kylin的代码改为:
if e.datacol.name="B" then 

   Dim Multi As String = e.datarow("B")
   Dim
Values() as String
   Values
= Multi.split("-")
   e.datarow("C")=
Values(0
)
   e.datarow("D")=Values(1)
   e.datarow("E")=Values(2)
end if
但是,当B列只有第一段[或第一和第二段]时,会提示错误,但结果还是会填到C[或C、D]列。请教,即:当段数(假设1-10段)不确定时代码怎么完善?


此主题相关图片如下:未命名.jpg
按此在新窗口浏览图片
[此贴子已经被作者于2008-12-5 18:28:52编辑过]

--  作者:mr725
--  发布时间:2008/12/5 20:29:00
--  

大家帮我呀。


[此贴子已经被作者于2008-12-6 1:09:34编辑过]

--  作者:小狐
--  发布时间:2008/12/5 22:03:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:分列问题er4.table


--  作者:mr725
--  发布时间:2008/12/6 0:38:00
--  
以下是引用小狐在2008-12-5 22:03:00的发言:
 下载信息  [文件大小:452.0 KB  下载次数:4]
图片点击可在新窗口打开查看点击浏览该文件:分列问题er4.table

这个不对呀~


图片点击可在新窗口打开查看此主题相关图片如下:未命名2.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2008-12-6 0:38:18编辑过]

--  作者:mr725
--  发布时间:2008/12/6 1:08:00
--  

还是不对,这是最新的文件

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:分列问题.table

[此贴子已经被作者于2008-12-6 1:08:37编辑过]