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


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

主题:代码执行报错

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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
代码执行报错  发帖心情 Post By:2021/3/16 16:13:00 [显示全部帖子]

Select Case e.DataCol.name
    Case "刷卡一","刷卡二","刷卡三","刷卡四","刷卡五","刷卡六"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("刷卡一") Or dr.IsNull("刷卡二") Or dr.IsNull("刷卡三") Or dr.IsNull("刷卡四") Or dr.("星期")<>'星期六'Or dr.("星期")<>'星期天'  Then    
            dr("休息") = Nothing
        Else
            Dim tp As TimeSpan
            tp = (dr("刷卡二") - dr("刷卡一"))+(dr("刷卡四") - dr("刷卡三"))+(dr("刷卡六") - dr("刷卡五"))
            dr("休息") = tp.TotalSeconds() 
        End If
End Select

上面报错,

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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2021/3/16 16:41:00 [显示全部帖子]

 If dr.IsNull("刷卡一") Or dr.IsNull("刷卡二") Or dr.IsNull("刷卡三") Or dr.IsNull("刷卡四") Or dr.("星期")<>'星期六'Or dr.("星期")<>'星期天'  Then    

报错,提示红色代码,“编译错误:应为标识符,我重新对一下,没有找到问题,具体哪出问题?

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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2021/3/17 0:15:00 [显示全部帖子]

还是报错,请老师看一下,纠正,谢谢
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:星期问题.zip



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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2021/3/17 14:47:00 [显示全部帖子]

 If dr.IsNull("列1") Or dr.IsNull("列2") Or dr.IsNull("列3") Or dr.IsNull("列4") Or dr("星期")<>'星期六'Or dr("星期")<>'星期天'  Then

去掉还是报错


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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2021/3/17 15:19:00 [显示全部帖子]

不报错,但不执行计算

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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望: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”任意列变化,只计算出“休息工时”,也就是"星期"="星期六"或"星期"="星期日",不计算星期一至星期五的工时

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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2021/3/17 16:29:00 [显示全部帖子]

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


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


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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望: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
改过上面也不行,全部不计算

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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望: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")
二,问题:
但上面代码,计算出来值都" 星期"="星期六和"星期"="星期日",不是需求

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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望: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()

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