Foxtable(狐表)用户栏目专家坐堂 → 求大师指点“索引超出数组界限”


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

主题:求大师指点“索引超出数组界限”

帅哥哟,离线,有人找我吗?
L88919138
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:714 积分:6817 威望:0 精华:0 注册:2012/3/1 7:20:00
求大师指点“索引超出数组界限”  发帖心情 Post By:2014/5/15 9:54:00 [只看该作者]

输入以下代码,想让存货流水账最后一行余额与SQL统计余额不同时自动重算该商品流水账,现运行提示“索引超出数组界限”,不知是何原因?

 

Dim cmd As new  SQLCommand
cmd.c
Dim jV As Double
For Each dr As DataRow In DataTables("存货档案").DataRows
    If dr("存货类别") <> "劳务不删"
        dr("主管审核") = "待确认"
        cmd.CommandText = "Select top 1 余额 From {存货账}  Where 商品名称 = '" & dr("存货名称") & "' order by [_sortkey] desc "
        If cmd.CommandText IsNot Nothing
            jc = cmd.ExecuteScalar
        End If
        cmd.CommandText = "Select sum(isnull(进库,0)) - sum(isnull(出库,0)) From {存货账}  Where 商品名称 = '" & dr("存货名称") & "' and 业务发生日期 is not null"
        If cmd.CommandText IsNot Nothing
            jV = cmd.ExecuteScalar
        End If
        If  CStr(JV) <> CStr(JC)
            dr("账面数量") = jV
            DataTables("存货账").LoadFilter = "[商品名称] = '" & dr("存货名称") & "' AND 业务发生日期 is not null"
            DataTables("存货账").Load
            With DataTables("存货账")
                .DataCols("进库").RaiseDataColChanged(.DataRows(0))
            End With
            cmd.CommandText = "Select top 1 余额 From {存货账}  Where 商品名称 = '" & dr("存货名称") & "' order by [_sortkey] desc "
            If cmd.CommandText IsNot Nothing
                jc = cmd.ExecuteScalar
                If CStr(JV) = CStr(JC)
                    dr("主管审核") = "已确认"
                Else
                    cmd.CommandText = "Select top 1 余额 From {存货账}  Where 商品名称 = '" & dr("存货名称") & "' order by [_Identify] desc "
                    If cmd.CommandText IsNot Nothing
                        jc = cmd.ExecuteScalar
                        If CStr(JV) = CStr(JC)
                            dr("主管审核") = "已确认"
                        Else
                            dr("主管审核") = "未确认"     
                        End If
                    End If
                End If
            End If
        ElseIf CStr(JV) = CStr(JC)
            dr("账面数量") = jV
            dr("主管审核") = "已确认"
        Else
            dr("账面数量") =""
            dr("主管审核") = "无数据"
        End If
    End If
Next


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/5/15 10:06:00 [只看该作者]

建议您用这个方法:
http://www.foxtable.com/help/topics/1485.htm

先找出是哪一行出错,然后分析原因,搞不定,告诉我们运行到哪一行出错,以及错误提示。

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


加好友 发短信
等级:三尾狐 帖子:714 积分:6817 威望:0 精华:0 注册:2012/3/1 7:20:00
  发帖心情 Post By:2014/5/15 10:16:00 [只看该作者]

这段代码之前运行一段时间并不提示错误,今天点击下才发现有提示这个错误,只是这个错误提示是什么意思还没弄明白,求大师指点下?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/15 10:21:00 [只看该作者]

没有查到数据,数据表没有一行数据,就会出错

 

            DataTables("存货账").LoadFilter = "[商品名称] = '" & dr("存货名称") & "' AND 业务发生日期 is not null"
            DataTables("存货账").Load
            With DataTables("存货账")
                .DataCols("进库").RaiseDataColChanged(.DataRows(0))
            End With


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


加好友 发短信
等级:三尾狐 帖子:714 积分:6817 威望:0 精华:0 注册:2012/3/1 7:20:00
  发帖心情 Post By:2014/5/15 12:52:00 [只看该作者]

经检测还真如甜大师所说,

“没有查到数据,数据表没有一行数据,就会出错。”那数据没有没被加载进来

判断代码又如何写呢?还请大师赐教?

 

DataTables("存货账").LoadFilter = "[商品名称] = '" & dr("存货名称") & "' AND 业务发生日期 is not null"
            DataTables("存货账").Load


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/5/15 14:03:00 [只看该作者]

if DataTables("存货账").datarows.count >0 then

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


加好友 发短信
等级:三尾狐 帖子:714 积分:6817 威望:0 精华:0 注册:2012/3/1 7:20:00
  发帖心情 Post By:2014/5/15 14:15:00 [只看该作者]

谢谢大师指点。

 


 回到顶部