Foxtable(狐表)用户栏目专家坐堂 → 代码执行报错


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

主题:代码执行报错

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


加好友 发短信
等级:五尾狐 帖子:1060 积分:7009 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2021/3/17 15:56:00 [只看该作者]

If dr.IsNull("列1") Or dr.IsNull("列2") Or dr.IsNull("列3") Or dr.IsNull("列4") Or dr("星期")="星期六" Or dr("星期")="星期日"  Then
这个执行,但是不是需求要的

需求是,“列1至列4”任意列变化,只计算出“休息工时”,也就是"星期"="星期六"或"星期"="星期日",不计算星期一至星期五的工时

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


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

f dr.IsNull("列1") Or dr.IsNull("列2") Or dr.IsNull("列3") Or dr.IsNull("列4") Or (dr("星期")<>"星期六"  andalso dr("星期")<>"星期日" ) Then

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


加好友 发短信
等级:五尾狐 帖子:1060 积分:7009 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2021/3/17 16:29:00 [只看该作者]

可以执行,但不能完全计算,我修改列数,也是无效,问题如图:


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


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


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

您自己的代码判断了这4个列任何一个为空都不会计算

dr.IsNull("列1") Or dr.IsNull("列2") Or dr.IsNull("列3") Or dr.IsNull("列4") 

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


加好友 发短信
等级:五尾狐 帖子:1060 积分:7009 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2021/3/17 16:49:00 [只看该作者]

If dr.IsNull("列1") Or (dr("星期")<>"星期六"  AndAlso dr("星期")<>"星期日" ) Then
If dr.IsNull("列1") Or dr.IsNull("列2") Or (dr("星期")<>"星期六"  AndAlso dr("星期")<>"星期日" ) Then
改过上面也不行,全部不计算

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


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

贴出完整代码

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


加好友 发短信
等级:五尾狐 帖子:1060 积分:7009 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2021/3/17 22:32:00 [只看该作者]

Select Case e.DataCol.name
    Case "列1","列2","列3","列4","列5","列6"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("列1") Or dr.IsNull("列2")  Or (dr("星期")<>"星期六"  AndAlso dr("星期")<>"星期日" ) Then
            dr("工时") = Nothing
        Else
            Dim tp1,tp2 As TimeSpan
            tp1 = dr("列2") - dr("列1")
            tp2 = dr("列6") - dr("列5")
            'If dr("类型")= "B" Or (dr("星期")<>"星期六"  AndAlso dr("星期")<>"星期日" ) Then
               If dr("类型")= "B" Or (dr("星期")="星期六"  AndAlso dr("星期")="星期日" ) Then
 

 dr("工时") = tp1.TotalSeconds()
            End If
            dr("工时") = tp2.TotalSeconds()
        End If
End Select
一,需求如下
上面代码是想计算出工时,当6列任意列变化,根据星期和类型计算工时,
1.当"类型"= "B" 星期"<>"星期六和"星期"<>"星期日"时,工时=dr("列2") - dr("列1");否则,工时=dr("列6") - dr("列5")
2."类型"<> "B" 星期"<>"星期六和"星期"<>"星期日"时,工时=dr("列6") - dr("列5")
二,问题:
但上面代码,计算出来值都" 星期"="星期六和"星期"="星期日",不是需求

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


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

        Else
            Dim tp1,tp2 As TimeSpan
            tp1 = dr("列2") - dr("列1")
            tp2 = dr("列6") - dr("列5")
            'If dr("类型")= "B" Or (dr("星期")<>"星期六"  AndAlso dr("星期")<>"星期日" ) Then
               If dr("类型")= "B" Or (dr("星期")="星期六"  AndAlso dr("星期")="星期日" ) Then
 dr("工时") = tp1.TotalSeconds()
            else
            dr("工时") = tp2.TotalSeconds()
End If
        End If

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


加好友 发短信
等级:五尾狐 帖子:1060 积分:7009 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2021/3/18 12:08:00 [只看该作者]

Else
            Dim tp1,tp2 As TimeSpan
            tp1 = dr("列2") - dr("列1")
            tp2 = dr("列6") - dr("列5")
           If dr("类型")= "B" Or (dr("星期")<>"星期六"  AndAlso dr("星期")<>"星期日" ) Then
              
 dr("工时") = tp1.TotalSeconds()
            else
            dr("工时") = tp2.TotalSeconds()
End If
        End If

老师,还是只计算" 星期"="星期六和"星期"="星期日",不是需求的,
真正需求是:
分别计算,“休息工时”和“工时”的值,
1,“休息工时”=" 星期"="星期六和"星期"="星期日"
2,“工时”=" 星期"<>"星期六和"星期"<>"星期日"  而且还要根据"类型"来判定,
   如果"类型"=" A"
  则
 tp1 = dr("列2") - dr("列1")-8400
 dr("工时") = tp1.TotalSeconds()
 如果"类型"=" B"
tp2 = dr("列6") - dr("列5")
 dr("工时") = tp2.TotalSeconds()

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


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

“休息工时”和“工时”是2个列?

星期六和星期日 和"类型=A、B有没有关系?

星期六和星期日 通过dr("列6") - dr("列5")计算?非星期六和星期日 通过dr("列2") - dr("列1")-8400计算?

 回到顶部
总数 26 上一页 1 2 3 下一页