Foxtable(狐表)用户栏目专家坐堂 → [求助]增加随机浮动系数后数据异常(已解决)


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

主题:[求助]增加随机浮动系数后数据异常(已解决)

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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2016/6/3 17:50:00 [只看该作者]

如果赋值后,就会出现前面出现的数据异常问题(插插间隔),会影响到工效的计算。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/6/3 17:56:00 [只看该作者]

理解不了你的逻辑。

 

那你可以在先得出 插插间隔,最后再赋值啊。


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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2016/6/3 18:00:00 [只看该作者]

插插间隔是当前行插卡时间和上一行插卡时间之差,所以要先得到当前行的插卡时间。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/6/3 18:02:00 [只看该作者]

 那没问题啊,有什么问题啊。

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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2016/6/3 18:08:00 [只看该作者]

问题是加上日期增量后,解决了插卡时间的问题(符合插卡时间的日期等于日期列),但是,插插间隔却出现数据异常,异常数据的个数和位置都不固定,并且没有规律。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/6/3 18:44:00 [只看该作者]

For Each dr As DataRow In DataTables("表A").DataRows
    dr("插卡时间") = Nothing
    dr("拔卡时间") = Nothing
    dr("插拔间隔") = Nothing
    dr("插插间隔") = Nothing
    dr("拔插间隔") = Nothing
    dr("工效") = Nothing
    dr("午休标记") = Nothing
Next

Dim fdxs As Integer = 6 '工位工时浮动系数
Dim cgsj As Date = #08:00:00# '上午出工时间
Dim swsgsj As Date = #11:00:00# '上午收工时间
Dim wxjg As Integer = 5400 '午休间隔
Dim rqzl As Integer = 86400 '日期增量

'填充当天工位首次插拔卡时间
For Each dr As DataRow In DataTables("表A").DataRows
    Dim pr As DataRow = DataTables("表A").Find("日期 = '" & dr("日期") & "' and 工位ID = '" & dr("工位ID") & "'","采集序号")
    If pr.IsNull("插卡时间") Then
        pr("插卡时间") = pr("日期") &" "& cgsj
        'pr("拔卡时间") = CDate(pr("插卡时间")).AddSeconds(pr("工位工时"))
        pr("拔卡时间") = CDate(pr("插卡时间")).AddSeconds(pr("工位工时") * Rand.Next(100 - fdxs,100 + fdxs) / 100)
    End If
Next

For Each dr As DataRow In DataTables("表A").DataRows
    Dim pr As DataRow = DataTables("表A").Find("工位ID = '" & dr("工位ID") & "' and 采集序号 <  '" & dr("采集序号") & "'","采集序号 Desc") '同批次工位的上一行
    Dim pr2 As DataRow = DataTables("表A").Find("工位ID = '" & dr("工位ID") & "' And 午休标记 = 1")
    If dr.IsNull("插卡时间") Then
        If pr("拔卡时间").AddSeconds(dr("工位工时")) > pr("日期") &" "& swsgsj And pr2 Is Nothing '判断本节拍结束时间大于中午收工时间以及当天本工位无午休标记
            If dr("日期") = pr("日期") Then
                dr("插卡时间") = pr("拔卡时间")
                dr("插插间隔") = (dr("插卡时间") - pr("插卡时间")).TotalSeconds()
                dr("拔插间隔") = (dr("插卡时间") - pr("拔卡时间")).TotalSeconds()
            Else
                dr("插卡时间") = pr("拔卡时间").AddSeconds(rqzl)
                dr("插插间隔") = (dr("插卡时间") - pr("插卡时间")).TotalSeconds() - rqzl
                dr("拔插间隔") = (dr("插卡时间") - pr("拔卡时间")).TotalSeconds() - rqzl
            End If
            'dr("拔卡时间") = CDate(dr("插卡时间")).AddSeconds(dr("工位工时") + wxjg)
            dr("拔卡时间") = CDate(dr("插卡时间")).AddSeconds(dr("工位工时") * Rand.Next(100 - fdxs,100 + fdxs) / 100 + wxjg)
            dr("午休标记") = 1 '添加午休标记
        Else
            If dr("日期") = pr("日期") Then
                dr("插卡时间") = pr("拔卡时间")
                dr("插插间隔") = (dr("插卡时间") - pr("插卡时间")).TotalSeconds()
                dr("拔插间隔") = (dr("插卡时间") - pr("拔卡时间")).TotalSeconds()
                If pr("午休标记") = 1 Then
                    dr("插插间隔") = (dr("插卡时间") - pr("插卡时间")).TotalSeconds() - wxjg
                End If
            Else
                dr("插卡时间") = pr("拔卡时间").AddSeconds(rqzl)
                dr("插插间隔") = (dr("插卡时间") - pr("插卡时间")).TotalSeconds() - rqzl
                dr("拔插间隔") = (dr("插卡时间") - pr("拔卡时间")).TotalSeconds() - rqzl
                If pr("午休标记") = 1 Then
                    dr("插插间隔") = (dr("插卡时间") - pr("插卡时间")).TotalSeconds() - wxjg - rqzl
                End If
            End If
           
            'dr("拔卡时间") = CDate(dr("插卡时间")).AddSeconds(dr("工位工时")
            dr("拔卡时间") = CDate(dr("插卡时间")).AddSeconds(dr("工位工时") * Rand.Next(100 - fdxs,100 + fdxs) / 100)
        End If
    End If
Next
For Each dr As DataRow In DataTables("表A").DataRows
    If dr.IsNull("插拔间隔") Then
        If dr("午休标记") = 1 Then
            dr("插拔间隔") = (dr("拔卡时间") - dr("插卡时间")).TotalSeconds() - wxjg
        Else
            dr("插拔间隔") = (dr("拔卡时间") - dr("插卡时间")).TotalSeconds()
        End If
    End If
    If dr.IsNull("插插间隔") Then
        dr("插插间隔") = dr("插拔间隔")
    End If
    dr("工效") = dr("工位工时") / dr("插插间隔")
Next
Tables("表A").AutoSizeCols()
DataTables("表A").Save()


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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2016/6/3 19:06:00 [只看该作者]

谢谢大红袍老师,问题得到完美解决,达到所期望的效果。再次衷心感谢!

 回到顶部
总数 17 上一页 1 2