Foxtable(狐表)用户栏目专家坐堂 → [求助]请问项目里面的代码那里错了?


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

主题:[求助]请问项目里面的代码那里错了?

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


加好友 发短信
等级:四尾狐 帖子:857 积分:6156 威望:0 精华:0 注册:2015/12/24 13:02:00
[求助]请问项目里面的代码那里错了?  发帖心情 Post By:2017/2/20 13:41:00 [只看该作者]

我在表属性的datacolchaged里面写了点代码,但是不是报错就是自动退出。。怎么写都不对,我想要实现,一行有6列双精度小数列,第六列等于前面5列之和,第七列等于前面5列的平均值。我这样写的代码为什么会导致系统自动关闭,请问该怎么写?

突然想起来个问题,如果我在窗口里定义了个代码a为整数,在表属性的datacolchaged也定义了a为整数,2个定义的a会不会冲突?

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目7.foxdb

Select Case e.DataCol.Name
    Case "第一列","第二列","第三列","第四列","第五列","第六列"
        Dim a As Integer = 0
        If e.DataRow.IsNull("第一列") OrElse e.DataRow("第一列") = 0 Then
            e.DataRow("第一列") = Nothing
        Else
            a = 1
            e.DataRow("第六列") = e.DataRow("第一列")
        End If
        If e.DataRow.IsNull("第二列") OrElse e.DataRow("第二列") = 0 Then
            e.DataRow("第二列") = Nothing
        Else
            a = 2
            e.DataRow("第六列") = e.DataRow("第六列") + e.DataRow("第二列")
        End If
        If e.DataRow.IsNull("第三列") OrElse e.DataRow("第三列") = 0 Then
            e.DataRow("第三列") = Nothing
        Else
            a = 3
            e.DataRow("第六列") = e.DataRow("第六列") + e.DataRow("第三列")
        End If
        If e.DataRow.IsNull("第四列") OrElse e.DataRow("第四列") = 0 Then
            e.DataRow("第四列") = Nothing
        Else
            a = 4
            e.DataRow("第六列") = e.DataRow("第六列") + e.DataRow("第四列")
        End If
        If e.DataRow.IsNull("第五列") OrElse e.DataRow("第五列") = 0 Then
            e.DataRow("第五列") = Nothing
        Else
            a = 5
            e.DataRow("第六列") = e.DataRow("第六列") + e.DataRow("第五列")
        End If
End Select




[此贴子已经被作者于2017/2/20 13:48:18编辑过]

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


加好友 发短信
等级:四尾狐 帖子:857 积分:6156 威望:0 精华:0 注册:2015/12/24 13:02:00
  发帖心情 Post By:2017/2/20 13:42:00 [只看该作者]

往第一列第二列里写如数值就会自动关闭

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


加好友 发短信
等级:六尾狐 帖子:1249 积分:9474 威望:0 精华:0 注册:2013/5/12 9:22:00
  发帖心情 Post By:2017/2/20 13:44:00 [只看该作者]

把代码贴出来看看。

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


加好友 发短信
等级:四尾狐 帖子:857 积分:6156 威望:0 精华:0 注册:2015/12/24 13:02:00
  发帖心情 Post By:2017/2/20 13:49:00 [只看该作者]

贴出来了,我还没写求平均值的代码,就试了下   不行了,直接退出系统


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


加好友 发短信
等级:六尾狐 帖子:1249 积分:9474 威望:0 精华:0 注册:2013/5/12 9:22:00
  发帖心情 Post By:2017/2/20 14:07:00 [只看该作者]

Select Case e.DataCol.Name
    Case "第一列","第二列","第三列","第四列","第五列"
        e.DataRow("第六列") = e.DataRow("第一列")+e.DataRow("第二列")+e.DataRow("第三列")+e.DataRow("第四列")+e.DataRow("第五列")
        e.DataRow("第七列") = e.DataRow("第六列")/5
End Select

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


加好友 发短信
等级:四尾狐 帖子:857 积分:6156 威望:0 精华:0 注册:2015/12/24 13:02:00
  发帖心情 Post By:2017/2/20 14:09:00 [只看该作者]

关键是   不一定每行都有数据啊。。。只有3列有数据  就得除以3。。。

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110569 积分:562735 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/2/20 14:26:00 [只看该作者]

Select Case e.DataCol.Name
    Case "第一列","第二列","第三列","第四列","第五列"
        Dim cls() As String = { "第一列","第二列","第三列","第四列","第五列" }
        Dim count As Integer = 0
        Dim sum As Integer = 0
        For Each c As String In cls
            If e.DataRow.IsNull(c) = False andalso e.DataRow(c) <> 0 Then
                sum += e.DataRow(c)
                count += 1
            End If
        Next
        e.DataRow("第六列") = sum
        If count > 0 Then e.DataRow("第七列") = sum/count
End Select
[此贴子已经被作者于2017/2/20 14:48:52编辑过]

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


加好友 发短信
等级:四尾狐 帖子:857 积分:6156 威望:0 精华:0 注册:2015/12/24 13:02:00
  发帖心情 Post By:2017/2/20 14:33:00 [只看该作者]

有2个问题,1是感谢2位解决,有点蓝的代码还不够完善,因为有可能为0的情况。2是为什么我写的代码会直接导致系统退出,我没发现那里有逻辑错误啊??

 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110569 积分:562735 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/2/20 14:37:00 [只看该作者]

增加一个判断即可
[此贴子已经被作者于2017/2/20 14:49:13编辑过]

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


加好友 发短信
等级:六尾狐 帖子:1249 积分:9474 威望:0 精华:0 注册:2013/5/12 9:22:00
  发帖心情 Post By:2017/2/20 14:38:00 [只看该作者]

Select Case e.DataCol.Name
    Case "第一列","第二列","第三列","第四列","第五列"
        e.DataRow("第六列") = e.DataRow("第一列")+e.DataRow("第二列")+e.DataRow("第三列")+e.DataRow("第四列")+e.DataRow("第五列")
        Dim cs() As String = {"第一列","第二列","第三列","第四列","第五列"}
        Dim v As Integer
        For Each c As String In cs
            If e.DataRow.IsNull(c) = False And e.DataRow(c) <> 0 Then
                v = v +1
            End If
        Next
        e.DataRow("第七列") = e.DataRow("第六列")/V
End Select
[此贴子已经被作者于2017/2/20 14:42:02编辑过]

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