以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]代码运行出错  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=85976)

--  作者:yyzlxc
--  发布时间:2016/6/7 11:18:00
--  [求助]代码运行出错

下面代码运行到黄色标记处出错,如何解决,请各位老师指教,谢谢!!

        For Each dr As DataRow In DataTables("扎包记录").DataRows
            Dim pr As DataRow = DataTables("扎包记录").Find("工位ID = \'" & dr("工位ID") & "\' and 采集序号 <  \'" & dr("采集序号") & "\'","采集序号 Desc") \'同批次工位的上一行
            Dim pr2 As DataRow = DataTables("扎包记录").Find("日期 = \'" & dr("日期") & "\' and 工位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("拔卡时间").AddSeconds(Rand.Next(2,6))
                    Else
                        dr("插卡时间") = pr("拔卡时间").AddSeconds((dr("日期") - pr("日期")).TotalSeconds + Rand.Next(2,6))
                    End If
                    dr("拔卡时间") = CDate(dr("插卡时间")).AddSeconds(dr("工位工时") * Rand.Next(100 - fdxs,100 + fdxs) / 100 + wxjg)
                    dr("午休标记") = 1 \'添加午休标记
                Else
                    If dr("日期") = pr("日期") Then
                        dr("插卡时间") = pr("拔卡时间").AddSeconds(Rand.Next(2,6))
                    Else
                        dr("插卡时间") = pr("拔卡时间").AddSeconds((dr("日期") - pr("日期")).TotalSeconds + Rand.Next(2,6))
                    End If
                    dr("拔卡时间") = CDate(dr("插卡时间")).AddSeconds(dr("工位工时") * Rand.Next(100 - fdxs,100 + fdxs) / 100)
                End If
                If pr("午休标记") = 1 Then
                    dr("插插间隔") = (dr("插卡时间") - pr("插卡时间")).TotalSeconds() - wxjg
                Else
                    dr("插插间隔") = (dr("插卡时间") - pr("插卡时间")).TotalSeconds()
                End If
            End If
            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("插卡时间") = False Then
                dr("拔插间隔") = dr("插插间隔") - pr("插拔间隔")
                dr("工效") = pr("工位工时") / dr("插插间隔")
            End If
        Next



图片点击可在新窗口打开查看此主题相关图片如下:捕获16.png
图片点击可在新窗口打开查看




--  作者:大红袍
--  发布时间:2016/6/8 9:58:00
--  

加上判断

 

If pr IsNot Nothing Then

 

Else

 

End If