以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  数据记忆和应用  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=157256)

--  作者:edisontsui
--  发布时间:2020/10/10 8:07:00
--  数据记忆和应用
    If e.DataRow("制造产品号").startswith("KS") 
        Dim Filter As String = "[制造产品号] = \'" & e.DataRow("制造产品号") & "\'"
        Dim drs As List(Of DataRow) = DataTables("KSBOM").Select(Filter)
        dim dr1 as string
        For i As Integer = 0 To drs.Count - 1
            If i = 0
                e.DataRow("型号") = drs(i)("型号")
                e.DataRow("原材料") = drs(i)("原材料")
                e.DataRow("开料参数") = drs(i)("开料参数")
                e.DataRow("标识") = drs(i)("标识")
                e.DataRow("毫米长度") = drs(i)("毫米长度")
                e.DataRow("长度") = drs(i)("长度")
                e.DataRow("数量") = drs(i)("数量") * e.DataRow("套数") 
                dr1 = e.datarow("生产票号")
            Else
                Dim nr As Row = Tables("弯头开料单").addnew
                nr("型号") = drs(i)("型号")
                nr("原材料") = drs(i)("原材料")
                nr("开料参数") = drs(i)("开料参数")
                nr("标识") = drs(i)("标识")
                nr("毫米长度") = drs(i)("毫米长度")
                nr("长度") = drs(i)("长度")
                nr("数量") = drs(i)("数量") * e.DataRow("套数")
                nr("生产票号") = dr1  
           End If
        Next
    End If

上述代码中,我定义了dr1,希望在 i=0 时记忆下来,然后应用到i = 1 等行里面去,但老是出现如下错误:
编译错误:dr1 在封闭块中隐藏变量

请教如何处理这个问题?谢谢。

--  作者:有点蓝
--  发布时间:2020/10/10 9:19:00
--  
代码没有问题,是这个事件其它代码也定义了一个同名的dr1变量,重复定义了,改为其它名称即可
--  作者:edisontsui
--  发布时间:2020/10/10 11:27:00
--  
谢谢。
--  作者:edisontsui
--  发布时间:2020/10/17 8:23:00
--  
If e.DataCol.name ="特殊产品"
    Dim Filter As String = "[生产票号] = \'" & e.DataRow("生产票号") & "\'"
    Dim drs As List(Of DataRow) = DataTables("弯头开料单").Select(Filter)
    Dim dr15 As String
        For i As Integer = 0 To drs.Count-1
            If i = 0
                dr15 =  e.DataRow("特殊产品")
            Else
                drs(i)("特殊产品") = dr15
            End If
        Next
End If

上述代码的目的是,如果在第一行的“特殊产品”里面输入了数据,那么在后面所有同生产票号的行,其“特殊产品”都复制输入同样的数据。但是实际运行效果是,最后一行的“特殊产品”却总是空白。请教为什么呢?

--  作者:有点蓝
--  发布时间:2020/10/17 9:02:00
--  
If e.DataCol.name ="特殊产品"
    Dim Filter As String = "[生产piao号] = \'" & e.DataRow("生产piao号") & "\' and [_Identify] <>" & e.DataRow("_Identify")
    Dim drs As List(Of DataRow) = DataTables("弯头开料单").Select(Filter)
    Dim dr15 As String=  e.DataRow("特殊产品")
        For i As Integer = 0 To drs.Count-1
            drs(i)("特殊产品") = dr15
        Next
End If

--  作者:edisontsui
--  发布时间:2020/10/17 11:30:00
--  
谢谢。