Foxtable(狐表)用户栏目专家坐堂 → 索引超出了数组界限


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

主题:索引超出了数组界限

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


加好友 发短信
等级:幼狐 帖子:157 积分:1521 威望:0 精华:0 注册:2016/5/12 14:53:00
索引超出了数组界限  发帖心情 Post By:2021/12/18 14:01:00 [只看该作者]

急求问题解决,请教执行如下代码是,出现索引超出了数组界限是怎么回事:
For Each dr As Row In Tables("装配日记录表").rows
    Dim ary() As String = dr("不良原因及数量").split(",")
    For Each s As String In ary
        Dim ndr As Row = Tables("装配质量流水账").addnew
        Dim a() As String = s.split("*")
        ndr("不良原因") = a(0)
        ndr("不良数量") = a(1)
        ndr("产品编号") = dr("产品编号")
    Next
Next

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


加好友 发短信
等级:超级版主 帖子:109681 积分:558103 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/18 14:07:00 [只看该作者]

For Each dr As Row In Tables("装配日记录表").rows
    Dim ary() As String = dr("不良原因及数量").split(",")
    For Each s As String In ary
        Dim ndr As Row = Tables("装配质量流水账").addnew
        Dim a() As String = s.split("*")
        ndr("不良原因") = a(0)
if a.length > 1 then ndr("不良数量") = a(1)
ndr("产品编号") = dr("产品编号")
    Next
Next

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


加好友 发短信
等级:幼狐 帖子:157 积分:1521 威望:0 精华:0 注册:2016/5/12 14:53:00
  发帖心情 Post By:2021/12/18 14:19:00 [只看该作者]

使用如上代码分解不出来:“不良原因”,与“不良数量”,而是复制了所表的所有编号

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


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


加好友 发短信
等级:超级版主 帖子:109681 积分:558103 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/18 14:41:00 [只看该作者]

说明源表就没有数据

For Each dr As Row In Tables("装配日记录表").rows
msgbox(dr("不良原因及数量"))
……

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


加好友 发短信
等级:幼狐 帖子:157 积分:1521 威望:0 精华:0 注册:2016/5/12 14:53:00
  发帖心情 Post By:2021/12/18 15:25:00 [只看该作者]

老师,确实前面的表里面有很多行“不良原因及数量”里面没有内容,但是筛选有内容的后还是不能分离成两列的数量,“不良数量”里面还是为空,能帮助改下代码:
For Each dr As Row In Tables("装配日记录表").rows
    Dim ary() As String = dr("不良原因及数量").split("")
    For Each s As String In ary
        Dim ndr As Row = Tables("装配质量流水账").addnew
        Dim a() As String = s.split("")
        ndr("不良原因") = a(0)
If a.length > 1 Then ndr("不良数量") = a(1)
ndr("产品编号") = dr("产品编号")
    Next
Next
增加代码变成筛选“不良原因及数量”不为空的行,以及分类成“不良原因”和“不良数量”两列都填写上


如上代码还是没有“不良数量”:

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


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


加好友 发短信
等级:超级版主 帖子:109681 积分:558103 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/18 15:35:00 [只看该作者]

源数据源怎么样的?根据什么字符分隔?不可能根据空字符串分隔到的.split("")

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


加好友 发短信
等级:幼狐 帖子:157 积分:1521 威望:0 精华:0 注册:2016/5/12 14:53:00
  发帖心情 Post By:2021/12/18 15:58:00 [只看该作者]

原数据源是按”文字+数字,用,逗号分组

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

老师,提取可以了,但是不会过滤不为空的值,

[此贴子已经被作者于2021/12/18 16:17:15编辑过]

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


加好友 发短信
等级:超级版主 帖子:109681 积分:558103 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/18 16:20:00 [只看该作者]

数据里要改为英文的逗号:Dim ary() As String = dr("不良原因及数量").split(",")

然后“掌声30”这种中间没有分隔符,是无法使用split拆分的。改为“掌声-30”这种,或者其它符号分隔

不然有点麻烦,可以参考
Dim pattern As String = "[\u4e00-\u9fa5]"
For Each dr As Row In Tables("装配日记录表").rows
    Dim ary() As String = dr("不良原因及数量").split(",")
    For Each s As String In ary
        Dim ndr As Row = Tables("装配质量流水账").addnew
Dim str = System.Text.RegularExpressions.Regex.Replace(s, pattern ,"")
ndr("不良数量") = str
ndr("不良原因") = s.replace(str,"")
ndr("产品编号") = dr("产品编号")
    Next
Next

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


加好友 发短信
等级:幼狐 帖子:157 积分:1521 威望:0 精华:0 注册:2016/5/12 14:53:00
  发帖心情 Post By:2021/12/18 16:36:00 [只看该作者]

老师,其他都没有问题了,主要是怎么实现筛选“不良原因及数量”行里面有数据进行统计,而没有数据的行就自动过滤(空值)

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


加好友 发短信
等级:超级版主 帖子:109681 积分:558103 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/18 16:53:00 [只看该作者]

使用8楼的方法处理后,在对"不良数量"列数据进行统计

 回到顶部
总数 12 1 2 下一页