Foxtable(狐表)用户栏目专家坐堂 → 列内容提取数值


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

主题:列内容提取数值

美女呀,离线,留言给我吧!
ganlan
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:194 积分:1280 威望:0 精华:0 注册:2021/4/17 10:35:00
列内容提取数值  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:194 积分:1280 威望:0 精华:0 注册:2021/4/17 10:35:00
  发帖心情 Post By: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
我用这个代码,好像判断是否含"("没起作用,即使不含"(",也一样提取了

 回到顶部
美女呀,离线,留言给我吧!
ganlan
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:194 积分:1280 威望:0 精华:0 注册:2021/4/17 10:35:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:194 积分:1280 威望:0 精华:0 注册:2021/4/17 10:35:00
  发帖心情 Post By:2021/7/15 15:57:00 [显示全部帖子]

但是提取张数的哪里弄不了,一直提示出错,是不是提取出的不是数值是文本吗

 回到顶部
美女呀,离线,留言给我吧!
ganlan
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:194 积分:1280 威望:0 精华:0 注册:2021/4/17 10:35:00
  发帖心情 Post By: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.

 回到顶部
美女呀,离线,留言给我吧!
ganlan
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:194 积分:1280 威望:0 精华:0 注册:2021/4/17 10:35:00
  发帖心情 Post By:2021/7/17 10:45: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
[此贴子已经被作者于2021/7/17 10:45:43编辑过]

 回到顶部