以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  生产模数插入模具保养  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=139732)

--  作者:edisontsui
--  发布时间:2019/8/20 13:07:00
--  生产模数插入模具保养
If User.Group = "行政" Or User.name = "开发者"
    If CurrentTable.name.contains("模具保养")
        For Each r As Row In Tables("生产模数统计").rows
\'            Dim NY As String = r("年") & r("月")
\'            If NY.length = 5
\'                NY = r("年") & "0" & r("月")
\'            Else
\'                NY = r("年") & r("月")
\'            End If
            If r("模具型号") = ""
            Else
                Dim contains As Boolean = False
                For Each dr As DataRow In DataTables("模具保养").DataRows
\'                    If dr("年月") = NY
                        If dr("模具型号") = r("模具型号")
                            dr("本月生产") = r("生产模数")
                            contains = True
                            Exit For
                        End If
\'                    End If
                Next
                If contains = False Then
                    Dim dr1 As DataRow
                    dr1 = DataTables("模具保养").AddNew()
                    dr1("模具型号") = r("模具型号")
                    dr1("本月生产") = r("生产模数")                    
                End If
            End If
        Next
    End If
End If

如上代码在原来的目的是:在“模具保养”里面查找日期和和模具型号都相同的数据行,然后将“生产模数统计”里面的“生产模数”插入到“模具保养”里面的“本月生产”里面去,后来我不需要比较日期是否相同了,就把与日期有关的代码注释掉了,但是整段代码却不起作用了。请教是哪里的问题?

--  作者:有点酸
--  发布时间:2019/8/20 14:15:00
--  
你回复日期部分的代码就有效了?分析代码不应该这样的,你用下面的方法调试一下看看:
http://www.foxtable.com/webhelp/topics/1485.htm

--  作者:edisontsui
--  发布时间:2019/8/20 15:20:00
--  
是的,恢复日期比较那些代码之后,就有效了。我加了类似 MessageBox.Show(1) 的跟踪语句,结果只会重复显示1和2两个数字,没有其他的警告。
--  作者:有点酸
--  发布时间:2019/8/20 15:32:00
--  
既然没有执行,一定是条件部分,就跟踪是那些条件不符合,导致代码不执行了。
--  作者:edisontsui
--  发布时间:2019/8/27 10:35:00
--  
If User.Group = "行政" Or User.name = "开发者"
    If CurrentTable.name.contains("模具保养")
        For Each r As Row In Tables("生产模数统计").rows
            Dim NY As String = r("年") & r("月")
            If NY.length = 5
                NY = r("年") & "0" & r("月")
            Else
                NY = r("年") & r("月")
            End If
            If r("模具型号") = ""
            Else
                Dim contains As Boolean = False
                For Each dr As DataRow In DataTables("模具保养").DataRows
\'                   If dr("年月") = NY
                        If dr("模具型号") = r("模具型号")
                            dr("本月生产") = r("生产模数")
                            contains = True
                            Exit For
                        End If
 MessageBox.Show(1) 
\'                   End If
                Next
 MessageBox.Show(2) 
                If contains = False Then
                    Dim dr1 As DataRow
                    dr1 = DataTables("模具保养").AddNew()
                    dr1("模具型号") = r("模具型号")
                    dr1("本月生产") = r("生产模数")                    
                End If
 MessageBox.Show(3) 
            End If
 MessageBox.Show(4) 
        Next
 MessageBox.Show(5) 
    End If
 MessageBox.Show(6) 
End If

上面的代码,我注释掉了2行,增加了6行提示代码,运行结果:1字出现的次数最多,其次是数字2、3、4,数字5和6就结束前出现过一次。总之,整段代码就是不起作用。去掉注释,就起作用了。

--  作者:有点蓝
--  发布时间:2019/8/27 10:45:00
--  
一个查找赋值的过程而已,不要那么麻烦吧

If User.Group = "行政" Or User.name = "开发者"
    If CurrentTable.name.contains("模具保养")
        For Each r As Row In Tables("生产模数统计").rows
            If r.isnull("模具型号") Then Continue For
            Dim dr As DataRow = DataTables("模具保养").find("模具型号=\'" & r("模具型号") & "\'")
            If dr Is Nothing Then
                dr = DataTables("模具保养").AddNew()
                dr("模具型号") = r("模具型号")
            End If
            dr("本月生产") = r("生产模数")
        Next
    End If
End If

--  作者:edisontsui
--  发布时间:2019/8/27 17:22:00
--  
你给出的上述代码还是无效。
--  作者:有点蓝
--  发布时间:2019/8/27 17:41:00
--  
上传具体实例说明
--  作者:edisontsui
--  发布时间:2019/8/29 14:36:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar


这是上述代码涉及到的2个数据表。我还没有建立按钮。请你建立按钮之后测试一下。谢谢。

--  作者:edisontsui
--  发布时间:2019/8/29 14:44:00
--  
请你不用试了,我找到原因了。