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


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

主题:错误代码

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


加好友 发短信
等级:三尾狐 帖子:790 积分:5677 威望:0 精华:0 注册:2009/4/17 18:42:00
错误代码  发帖心情 Post By:2010/10/12 14:18:00 [只看该作者]

请问一下提示是什么问题,在执行列重置时出现,而且是在加载所有行时出现,如只加载部分数据,正常,谢谢
图片点击可在新窗口打开查看此主题相关图片如下:未命名.gif
图片点击可在新窗口打开查看

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/10/12 14:52:00 [只看该作者]

最小值必须等于或小于最大值,错误代码在生产工序的DatacolChanged事件,其中某行使用Table的Compute。

最好有简单例子再现错误。


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


加好友 发短信
等级:三尾狐 帖子:790 积分:5677 威望:0 精华:0 注册:2009/4/17 18:42:00
  发帖心情 Post By:2010/10/12 15:01:00 [只看该作者]

这是该表  DatacolChanged 事件代码:我逐段进行加载数据,都没问题,当时全加载就不行。

Dim dr As DataRow = e.DataRow
Dim t As TimeSpan
If e.DataCol.Name = "计划日期_结束" Orelse e.DataCol.Name = "计划日期_开始" Then
    If dr.IsNull("计划日期_结束") Orelse dr.IsNull("计划日期_开始") Then
        dr("周期") = Nothing
    Else
        t = dr("计划日期_结束")-dr("计划日期_开始")
        dr("周期") = t.days+ (t.Hours)/24
    End If
End If
Dim dt As datatable = DataTables("生产工艺")
Dim str As String = "图号 = '" & dr("图号") & "' And 工序_序号 = '" & dr("工序_序号") & "' And 派工单号 = '" & dr("派工单号") & "'  And 状态 = '执行'  "
If e.DataCol.Name = "图号"  Orelse e.DataCol.Name = "工序_序号" Orelse e.DataCol.Name = "派工单号"   Then
    Dim r As DataRow = dt.Find(str)
    If r IsNot Nothing Then
        dr("成本_加工") = (dt.Compute("Sum(成本_加工费元)",str))
        dr("成本_工资") = (dt.Compute("Sum(成本_工资元)",str))
        dr("工艺工时_准结") = (dt.Compute("Sum(工艺工时_准结)",str))
        dr("工艺工时_加工")=(dt.Compute("Sum(工艺工时_加工)",str))
        dr("完成工时_准结")=(dt.Compute("Sum(完成工时_准结)",str))
        dr("完成工时_加工")=(dt.Compute("Sum(完成工时_加工)",str))
        dr("工废损失")=(dt.Compute("Sum(工废损失)",str))
        dr("实用工时")=(dt.Compute("Sum(实用工时)",str))
        dr("工艺工时_天数")=(dt.Compute("Sum(工艺工时_天数)",str))
        dr("完成工时_天数")=(dt.Compute("Sum(完成工时_天数)",str))
    End If
End If
Select Case e.DataCol.Name
    Case "工艺工时_准结","工艺工时_加工","完成工时_准结","完成工时_加工","工作时间"
        dr("完成工时_比例")=(dr("完成工时_准结")+dr("完成工时_加工"))/(dr("工艺工时_准结")+dr("工艺工时_加工"))
    Case "周期"
        Select Case dr("周期")
            Case  Nothing
                dr("周期比例")= Nothing
            Case Else
                dr("周期比例")=dr("周期")/dr("工艺工时_天数")
        End Select
    Case "周期比例"
        Select Case dr("周期比例")
            Case  Nothing
                dr("周期情况") = Nothing
            Case  0 To 1
                dr("周期情况") = "请提前准备"
            Case 1.001 To 1.5
                dr("周期情况") = "注意进度"
            Case 1.501 To 2.5
                dr("周期情况") = "正常安排"
            Case 2.501 To 1000
                dr("周期情况") = "可往后安排"
        End Select
    Case "完成工时_比例"
        Select Case dr("完成工时_比例")
            Case  0
                Select Case dr("计划日期_结束")
                    Case  Nothing
                        dr("在线情况") = Nothing
                    Case Else
                        dr("在线情况") = "待上线"
                End Select
            Case 0 To 0.9999
                dr("在线情况") = "在线生产"
            Case 1
                dr("在线情况") = "已完工"
        End Select
    Case "剩余天数_开始"
        Select Case dr("剩余天数_开始")
            Case  Nothing
                dr("开始天数") = Nothing
            Case  0 To 1
                dr("开始天数") = "今天上线"
            Case 1.1 To 2
                dr("开始天数") = "明天上线"
            Case 2.1 To 3
                dr("开始天数") = "后天上线"
            Case 3.1 To 5
                dr("开始天数") = "3天后上线"
            Case 5.1 To 7
                dr("开始天数") = "5天后上线"
            Case 7.1 To 15
                dr("开始天数") = "7天后上线"
            Case 15.1 To 30
                dr("开始天数") = "半月后上线"
            Case 30.1 To 10000
                dr("开始天数") = "1个月后上线"
        End Select
    Case "剩余天数_结束"
        Select Case dr("剩余天数_结束")
            Case  Nothing
                dr("结束天数") = Nothing
            Case  0 To 1
                dr("结束天数") = "今天完工"
            Case 1.1 To 2
                dr("结束天数") = "明天完工"
            Case 2.1 To 3
                dr("结束天数") = "后天完工"
            Case 3.1 To 5
                dr("结束天数") = "5天内完工"
            Case 5.1 To 7
                dr("结束天数") = "7天内完工"
            Case 7.1 To 15
                dr("结束天数") = "半月内完工"
            Case 15.1 To 30
                dr("结束天数") = "1个月内完工"
            Case 30.1 To 10000
                dr("结束天数") = "1个月后完工"
        End Select
End Select

If e.DataCol.Name = "确定" Then '如果是已结帐列的内容变动
    If e.NewValue = True Then '而且变动后的值是True(已勾选)
        e.DataRow.Locked = True '那么锁定此行
    End If
End If
If e.DataCol.name = "图号" Orelse e.DataCol.name = "派工单号"  Orelse e.DataCol.name = "工序_序号"
    e.DataRow("实际日期_开始") = DataTables("日报表").Compute("min(日期)","[图号] = '" & e.DataRow("图号") & "'and [派工单号] = '" & e.DataRow("派工单号") & "'and [工序_序号] = '" & e.DataRow("工序_序号") & "'  ")
    e.DataRow("实际日期_结束") = DataTables("日报表").Compute("max(日期)","[图号] = '" & e.DataRow("图号") & "'and [派工单号] = '" & e.DataRow("派工单号") & "'and [工序_序号] = '" & e.DataRow("工序_序号") & "' ")
End If
If e.DataCol.Name = "计划日期_开始"  Orelse e.DataCol.Name = "计划日期_结束" Then
    If dr.IsNull("计划日期_开始")  Orelse dr.IsNull("计划日期_结束") Then
        dr("剩余天数_结束") = Nothing
        dr("剩余天数_开始") = Nothing
    Else
        dr("剩余天数_结束") = DateDiff("h",Date.Today.Now,dr("计划日期_结束"))/24
        dr("剩余天数_开始") = DateDiff("h",Date.Today.Now,dr("计划日期_开始"))/24
    End If
End If
If e.DataCol.Name = "图号" Orelse e.DataCol.Name = "派工单号"  Then
    Dim dr3 As DataRow = DataTables("生产目录").Find("[图号] = '" & e.DataRow("图号") & "' And [派工单号] = '" & e.DataRow("派工单号") & "'  ")
    If dr3 IsNot Nothing Then
        e.DataRow("到料数量") = dr3("到料数量")
        e.DataRow("计划数量") = dr3("计划数量")
        e.DataRow("交货情况") = dr3("交货情况")
    Else
        e.DataRow("到料数量") = Nothing
        e.DataRow("计划数量") = Nothing
        e.DataRow("交货情况") = Nothing
    End If
End If
If e.DataCol.Name = "图号" Orelse e.DataCol.Name = "工序_序号"   Then
    Dim dr2 As DataRow = DataTables("产品工序").Find("[图号] = '" & e.DataRow("图号") & "'And [工序_序号] = '" & e.DataRow("工序_序号") & "'  ")
    If dr2 IsNot Nothing Then
        e.DataRow("图名") = dr2("图名")
        e.DataRow("工序号") = dr2("工序号")
        e.DataRow("机型") = dr2("机型")
        e.DataRow("所属部分") = dr2("所属部分")
        e.DataRow("名称") = dr2("名称")
        e.DataRow("工序_班组") = dr2("工序_班组")
        e.DataRow("工序_简要提示") = dr2("工序_简要提示")
        e.DataRow("备注") = dr2("备注")
        e.DataRow("照片") = dr2("照片")
        e.DataRow("确定") = dr2("确定")
    Else
        e.DataRow("图名") = Nothing
        e.DataRow("工序号") = Nothing
        e.DataRow("机型") = Nothing
        e.DataRow("所属部分") = Nothing
        e.DataRow("名称") = Nothing
        e.DataRow("工序_班组") = Nothing
        e.DataRow("工序_简要提示") = Nothing
        e.DataRow("备注") = Nothing
        e.DataRow("照片") = Nothing
        e.DataRow("确定") = Nothing
    End If
End If
If e.DataCol.Name = "图号" Orelse e.DataCol.Name = "工序_序号" Orelse e.DataCol.Name = "派工单号"  Then
    If dr.IsNull("图号")  Orelse dr.IsNull("派工单号") Orelse dr.IsNull("工序_序号") Orelse dr.IsNull("工艺工时_天数") Orelse dr("状态") = "暂停" Then
        dr("计划日期_结束") = Nothing
        dr("计划日期_开始") = Nothing
    Else
        Dim pr As DataRow = DataTables("生产目录").Find("[图号] = '" & e.DataRow("图号") & "'And [派工单号] = '" & e.DataRow("派工单号") & "' ")
        Dim Sum As Double = Tables("生产工序").Compute("Sum(工艺工时_天数)","[图号] = '" & dr("图号") & "' And [派工单号] = '" & dr("派工单号") & "' And [状态]= '执行'  And [工序_序号]  <=  " & dr("工序_序号"))
        Dim Sum1 As Double = Tables("生产工序").Compute("Sum(工艺工时_天数)","[图号] = '" & dr("图号") & "' And [派工单号] = '" & dr("派工单号") & "' And [状态]= '执行' And [工序_序号] >=  " & dr("工序_序号"))
        If pr Is Nothing  Then
            dr("计划日期_结束") = Nothing
            dr("计划日期_开始") = Nothing
        Else
            If  pr.IsNull("生产周期") Orelse pr.IsNull("工艺工时_天数")  Then
                dr("计划日期_结束") = Nothing
                dr("计划日期_开始") = Nothing
            Else
                dr("计划日期_结束") = pr("到料日期").AddDays(Sum * (pr("生产周期")/pr("工艺工时_天数")))
                dr("计划日期_开始") = pr("完工日期").AddDays(-Sum1 * (pr("生产周期")/pr("工艺工时_天数"))+0.5)
            End If
        End If
    End If
End If


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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/10/12 16:08:00 [只看该作者]

问题可能在这两行:
 
  Dim Sum As Double = Tables("生产工序").Compute("Sum(工艺工时_天数)","[图号] = '" & dr("图号") & "' And [派工单号] = '" & dr("派工单号") & "' And [状态]= '执行'  And [工序_序号]  <=  " & dr("工序_序号"))
  Dim Sum1 As Double = Tables("生产工序").Compute("Sum(工艺工时_天数)","[图号] = '" & dr("图号") & "' And [派工单号] = '" & dr("派工单号") & "' And [状态]= '执行' And [工序_序号] >=  " & dr("工序_序号"))

 先屏蔽这两行,看看代码正常否,如果正常,说明问题就在这两行。

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


加好友 发短信
等级:三尾狐 帖子:790 积分:5677 威望:0 精华:0 注册:2009/4/17 18:42:00
  发帖心情 Post By:2010/10/12 22:50:00 [只看该作者]

谢谢狐爸,就是这两行有问题,我改改看看

 回到顶部