Foxtable(狐表)用户栏目专家坐堂 → 这段代码错在哪


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

主题:这段代码错在哪

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


加好友 发短信
等级:九尾狐 帖子:2649 积分:19390 威望:0 精华:1 注册:2008/9/12 9:19:00
这段代码错在哪  发帖心情 Post By:2014/4/20 18:53:00 [只看该作者]

这段代码在以前的项目中可以正常运行,移植到新项目后有问题,分析了半天还是没搞定。

Select Case e.DataCol.Name
    Case "物料","入仓_数量","出仓_数量"
        Dim dr As DataRow
        Dim mr As DataRow = e.DataRow
        Dim drs As List(of DataRow)
        dr = e.DataTable.Find("[日] < " & mr("日") & " And [物料] = '" & mr("物料") & "'", "[日]")
        If dr Is Nothing Then
            mr("库存_数量") = mr("入仓_数量") - mr("出仓_数量")
            'mr("库存_金额") = mr("入仓_金额") - mr("出仓_金额")

            dr = mr
        End If
        drs = e.DataTable.Select("[日] >= " & dr("日") & " And [物料] = '" & dr("物料") & "'", "[日]")
        For i As Integer = 1 To drs.Count - 1
            drs(i)("库存_数量") = drs(i-1)("库存_数量") + drs(i)("入仓_数量") - drs(i)("出仓_数量")
            'drs(i)("库存_金额") = drs(i-1)("库存_金额") + drs(i)("入仓_金额") - drs(i)("出仓_金额")

        Next
        If e.DataCol.Name = "物料" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
            dr = e.DataTable.Find("[日] < " & mr("日") & " And [物料] = '" & e.OldValue & "'", "[日]")
            If dr Is Nothing Then
                dr = e.DataTable.Find("[物料] = '" & e.OldValue & "'", "[日]")
                If dr IsNot Nothing Then
                    dr("库存_数量") = dr("入仓_数量") - dr("出仓_数量")
                    'dr("库存_金额") = dr("入仓_金额") - dr("出仓_金额")

                End If
            End If
            If dr IsNot Nothing Then
                drs = e.DataTable.Select("[日] >= " & dr("日") & " And [物料] = '" & dr("物料") & "'", "[日]")
                For i As Integer = 1 To drs.Count - 1
                    drs(i)("库存_数量") = drs(i-1)("库存_数量") + drs(i)("入仓_数量") - drs(i)("出仓_数量")
                    'drs(i)("库存_金额") = drs(i-1)("库存_金额") + drs(i)("入仓_金额") - drs(i)("出仓_金额")

                Next
            End If
        End If
End Select
图片点击可在新窗口打开查看此主题相关图片如下:snap1.jpg
图片点击可在新窗口打开查看

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


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

 是不是这个 mr("日")  是空值?

 

 自己调试 http://www.foxtable.com/help/topics/1485.htm

 


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


加好友 发短信
等级:九尾狐 帖子:2649 积分:19390 威望:0 精华:1 注册:2008/9/12 9:19:00
  发帖心情 Post By:2014/4/20 19:36:00 [只看该作者]

以下是引用有点甜在2014-4-20 19:12:00的发言:

 是不是这个 mr("日")  是空值?

 

 自己调试 http://www.foxtable.com/help/topics/1485.htm

 

调试过,错误可能在红色代码处,mr("日")不是空值


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


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

 你这一列,[日],是什么类型的?

 

 弹出,截图发上来看看 msgbox("[日] < " & mr("日") & " And [物料] = '" & mr("物料") & "'")


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


加好友 发短信
等级:九尾狐 帖子:2649 积分:19390 威望:0 精华:1 注册:2008/9/12 9:19:00
  发帖心情 Post By:2014/4/20 19:48:00 [只看该作者]

[日]是字符型

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

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


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

 呃,字符类型?那得这样写,要加单引号的,下面的你都得改改

 

dr = e.DataTable.Find("[日] < '" & mr("日") & "' And [物料] = '" & mr("物料") & "'", "[日]")

 


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


加好友 发短信
等级:九尾狐 帖子:2649 积分:19390 威望:0 精华:1 注册:2008/9/12 9:19:00
  发帖心情 Post By:2014/4/20 20:05:00 [只看该作者]

加了单引号正常了,疑惑的是,相同的代码(没加单引号)在其它一个项目却能正常运行
谢了

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


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

以下是引用实话实说在2014-4-20 20:05:00的发言:
加了单引号正常了,疑惑的是,相同的代码(没加单引号)在其它一个项目却能正常运行
谢了

 

不应该吧?只有列是 数值 类型的,才不用加引号


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


加好友 发短信
等级:婴狐 帖子:69 积分:560 威望:0 精华:0 注册:2014/3/16 20:05:00
  发帖心情 Post By:2014/4/20 21:28:00 [只看该作者]

没有断点调试,搞得每次出错,不好跟踪,尤其是跨了几个自定义函数之后。

 回到顶部