以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 列内容提取数值 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=170176) |
|
-- 作者:ganlan -- 发布时间:2021/7/14 22:09:00 -- 列内容提取数值 例如列的内容如下: 337、10月2日 李四(13500000000)成人1张338、10月2日 李四(13500000000)儿童2张 想在成人数量(A列)填入1,儿童数量(B列)填入2 名字填入李四(C列),联系电话(D列)填入13500000000 能用表达式做到吗
[此贴子已经被作者于2021/7/17 10:44:29编辑过]
|
|
-- 作者:ganlan -- 发布时间:2021/7/15 0:01:00 -- If e.DataCol.Name = "内容" AndAlso e.DataRow.isnull("内容") = False AndAlso e.DataRow("内容").Contains ("(") = True Then Dim ar() As String = e.DataRow("内容").split("(") Dim ac() As String = ar(0).split("日") If ac.length > 1 Then e.DataRow("名字") = ac(1).Trim() End If 我用这个代码,好像判断是否含"("没起作用,即使不含"(",也一样提取了
|
|
-- 作者:有点蓝 -- 发布时间:2021/7/15 8:51:00 -- 应该是中文的括号,不是英文括号,看看:http://www.foxtable.com/webhelp/topics/1273.htm |
|
-- 作者:ganlan -- 发布时间:2021/7/15 15:04:00 -- 知道原因了,前面如果有内容了,不包含(的时候代码不会变 所有需要加个else If e.DataCol.Name = "内容" And e.DataRow("内容").Contains ("(") = True AndAlso e.DataRow.isnull("内容") = False Then Dim ar() As String = e.DataRow("内容").split("(") Dim ac() As String = ar(0).split("日") If ac.length > 1 Then e.DataRow("名字") = ac(1).Trim() Else If e.DataCol.Name = "内容" And e.DataRow("内容").Contains ("(") = False Then e.DataRow("名字") = Nothing End If End If |
|
-- 作者:ganlan -- 发布时间:2021/7/15 15:57:00 -- 但是提取张数的哪里弄不了,一直提示出错,是不是提取出的不是数值是文本吗 |
|
-- 作者:有点蓝 -- 发布时间:2021/7/15 16:16:00 -- 字符串提取的内容肯定也是字符串,可以做一下转换:http://www.foxtable.com/webhelp/topics/1513.htm |
|
-- 作者:ganlan -- 发布时间:2021/7/15 21:39:00 -- If e.DataCol.Name = "内容" And e.DataRow("内容").Contains ("张") = True AndAlso e.DataRow.isnull("内容") = False Then Dim cr1() As String = e.DataRow("内容").split("成人") Dim cr2() As String = cr1(0).split("张") If cr2.length > 1 Then e.DataRow("成人") = CDbl(cr2(1)) Else If e.DataCol.Name = "内容" And e.DataRow("内容").Contains ("张") = False Then e.DataRow("成人") = Nothing End If End If 用这个代码,重置列后提示出错Exception has been thrown by the target of an invocation.
|
|
-- 作者:有点蓝 -- 发布时间:2021/7/15 21:51:00 -- 首先split只能使用单个字符 |
|
-- 作者:ganlan -- 发布时间:2021/7/17 10:45:00 --
[此贴子已经被作者于2021/7/17 10:45:43编辑过]
|
|
-- 作者:有点蓝 -- 发布时间:2021/7/17 11:08:00 -- 如果cr2(1)是数字,肯定没有问题 If cr2.length > 1 Then msgbox(cr2(1)) e.DataRow("成人") = CDbl(cr2(1)) else …… |