以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  找出生产piao号和制造产品号完全相同的行  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=135626)

--  作者:edisontsui
--  发布时间:2019/5/30 14:23:00
--  找出生产piao号和制造产品号完全相同的行
If e.DataCol.Name = "长度" Then 
    If dr("制造产品号").startsWith("C")
        If e.DataRow.IsNull("生产票号") = False AndAlso e.DataRow.IsNull("制造产品号") = False
            Dim dr3 As DataRow = e.DataRow
            If e.DataTable.Find("生产票号 = \'" & dr3("生产票号") & "\' And 制造产品号 = \'" & dr3("制造产品号") & "\'") IsNot Nothing Then \'如果找到生产票号和制造产品号完全相同的行,则不执行判断杆数的代码      
            Else

                \'判断杆数
                If dr("制造产品号").startsWith("CFU")
                    If dr("制造产品号").contains("16G")  
                       dr("每套杆数") = 1
                    ElseIf dr("制造产品号").contains("32G") 
                       dr("每套杆数") = 2
                    ElseIf dr("制造产品号").contains("50G") 
                       dr("每套杆数") = 3
                    End If
                End If
                \'结束判断杆数

            End If
        End If
    Else
        dr("每套杆数") = Nothing
        dr("每杆铜片") = Nothing
        dr("铜片总数") = Nothing
    End If
End If

上面的代码,如果不要第4层的 if... else... end if 嵌套,那么执行起来是没有问题的。但是加上第4层嵌套,执行起来就没有作用了。请假是哪里的问题?谢谢。

--  作者:有点甜
--  发布时间:2019/5/30 14:54:00
--  

加入msgbox,弹出值看一下

 

msgbox(dr("制造产品号"))

msgbox(dr("制造产品号").startsWith("CFU"))

msgbox(dr("制造产品号").contains("16G"))


--  作者:edisontsui
--  发布时间:2019/5/30 15:22:00
--  
弹出: 制造产品号那个单元的值 CFD2640GG36LFOS19B17M65 和 False
--  作者:有点甜
--  发布时间:2019/5/30 15:46:00
--  

 

开始是CFD,不是CFU,自然不会执行if判断的代码啊。

 

 


--  作者:edisontsui
--  发布时间:2019/5/30 16:10:00
--  
我把制造产品号换成 CFU2532G30LFS15B15M41,则弹出:CFU2532G30LFS15B15M41 和 True,但还是没有“每套杆数”出来。
--  作者:有点甜
--  发布时间:2019/5/30 16:22:00
--  

弹出什么

 

If e.DataCol.Name = "长度" Then
    If dr("制造产品号").startsWith("C")
        If e.DataRow.IsNull("生产票号") = False AndAlso e.DataRow.IsNull("制造产品号") = False
            Dim dr3 As DataRow = e.DataRow
            If e.DataTable.Find("生产票号 = \'" & dr3("生产票号") & "\' And 制造产品号 = \'" & dr3("制造产品号") & "\'") IsNot Nothing Then \'如果找到生产票号和制造产品号完全相同的行,则不执行判断杆数的代码
            Else
               
                msgbox(dr("制造产品号"))
               
                msgbox(dr("制造产品号").startsWith("CFU"))
               
                msgbox(dr("制造产品号").contains("32G"))

               
               
                \'判断杆数
                If dr("制造产品号").startsWith("CFU")
                    If dr("制造产品号").contains("16G")
                        dr("每套杆数") = 1
                    ElseIf dr("制造产品号").contains("32G")
                        dr("每套杆数") = 2
                    ElseIf dr("制造产品号").contains("50G")
                        dr("每套杆数") = 3
                    End If
                End If
                \'结束判断杆数
               
               
            End If
        End If
    Else
        dr("每套杆数") = Nothing
        dr("每杆铜片") = Nothing
        dr("铜片总数") = Nothing
    End If
End If

 


--  作者:edisontsui
--  发布时间:2019/5/30 16:25:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:临时代码.zip


上面档案里面是完整的代码,我在网页上发给你的是简化了的。不知道完整的代码是否有问题?

--  作者:有点甜
--  发布时间:2019/5/30 16:31:00
--  

弹出什么

 

If e.DataCol.Name = "长度" Then
    If dr("制造产品号").startsWith("C")
        If e.DataRow.IsNull("生产票号") = False AndAlso e.DataRow.IsNull("制造产品号") = False
            Dim dr3 As DataRow = e.DataRow
            If e.DataTable.Find("生产票号 = \'" & dr3("生产票号") & "\' And 制造产品号 = \'" & dr3("制造产品号") & "\'") IsNot Nothing Then \'如果找到生产票号和制造产品号完全相同的行,则不执行判断杆数的代码
            Else
               
                msgbox(dr("制造产品号"))
               
                msgbox(dr("制造产品号").startsWith("CFU"))
               
                msgbox(dr("制造产品号").contains("32G"))

               
               
                \'判断杆数
                If dr("制造产品号").startsWith("CFU")
                    If dr("制造产品号").contains("16G")
                        dr("每套杆数") = 1
                    ElseIf dr("制造产品号").contains("32G")
                        dr("每套杆数") = 2
                    ElseIf dr("制造产品号").contains("50G")
                        dr("每套杆数") = 3
                    End If
                End If
                \'结束判断杆数
               
               
            End If
        End If
    Else
        dr("每套杆数") = Nothing
        dr("每杆铜片") = Nothing
        dr("铜片总数") = Nothing
    End If
End If

 



--  作者:edisontsui
--  发布时间:2019/5/30 17:08:00
--  
没有任何东西弹出来。“每套杆数”也不会出现任何值。
--  作者:有点甜
--  发布时间:2019/5/30 19:23:00
--  
以下是引用edisontsui在2019/5/30 17:08:00的发言:
没有任何东西弹出来。“每套杆数”也不会出现任何值。

 

加入msgbox,看哪个if判断没有满足

 

msgbox(1)

If e.DataCol.Name = "长度" Then

msgbox(2)
    If dr("制造产品号").startsWith("C")

msgbox(3)
        If e.DataRow.IsNull("生产票号") = False AndAlso e.DataRow.IsNull("制造产品号") = False

msgbox(4)
            Dim dr3 As DataRow = e.DataRow
            If e.DataTable.Find("生产票号 = \'" & dr3("生产票号") & "\' And 制造产品号 = \'" & dr3("制造产品号") & "\'") IsNot Nothing Then \'如果找到生产票号和制造产品号完全相同的行,则不执行判断杆数的代码

msgbox(5)
            Else