以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  增加行  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=138448)

--  作者:13775189031
--  发布时间:2019/7/31 13:46:00
--  增加行

想改成如果“材料标准”=“多种”,则

Dim ndr As Row = Tables("角钢进料表明细").AddNew

                ndr("进料表编号") = e.DataRow("进料表编号")

                ndr("工程名称") = e.DataRow("工程名称")

                ndr("塔型") = e.DataRow("塔型")

                ndr("仓储配料员") = e.DataRow("仓储配料员")

                ndr("审核") = e.DataRow("审核")

                ndr("编制人") = e.DataRow("编制人")

                ndr.Move(0)

其他的材料标准,除了上面的以外,都在增加一项

               ndr("材料标准") = e.DataRow("材料标准")

怎么改?



Select Case e.DataCol.name

    Case "进料表编号","材料标准"

        If e.DataRow.IsNull("进料表编号") Then

            DataTables("角钢进料表明细").DeleteFor("进料表编号=\'" & e.DataRow("进料表编号") & "\'")

            e.DataRow("状态_发料完成") = False

            e.DataRow("状态_U8出库") = False

        Else

            If e.DataRow("材料标准") = "多种" Then

                Dim ndr As Row = Tables("角钢进料表明细").AddNew

                ndr("进料表编号") = e.DataRow("进料表编号")

                ndr("工程名称") = e.DataRow("工程名称")

                ndr("塔型") = e.DataRow("塔型")

                ndr("仓储配料员") = e.DataRow("仓储配料员")

                ndr("审核") = e.DataRow("审核")

                ndr("编制人") = e.DataRow("编制人")

                ndr.Move(0)

            End If

            If e.DataRow("材料标准") = "国标" Then

                Dim ndr As Row = Tables("角钢进料表明细").AddNew

                ndr("进料表编号") = e.DataRow("进料表编号")

                ndr("工程名称") = e.DataRow("工程名称")

                ndr("塔型") = e.DataRow("塔型")

                ndr("材料标准") = e.DataRow("材料标准")

                ndr("仓储配料员") = e.DataRow("仓储配料员")

                ndr("审核") = e.DataRow("审核")

                ndr("编制人") = e.DataRow("编制人")

                ndr.Move(0)

            End If

            If e.DataRow("材料标准") = "国网" Then

                Dim ndr As Row = Tables("角钢进料表明细").AddNew

                ndr("进料表编号") = e.DataRow("进料表编号")

                ndr("工程名称") = e.DataRow("工程名称")

                ndr("塔型") = e.DataRow("塔型")

                ndr("材料标准") = e.DataRow("材料标准")

                ndr("仓储配料员") = e.DataRow("仓储配料员")

                ndr("审核") = e.DataRow("审核")

                ndr("编制人") = e.DataRow("编制人")

                ndr.Move(0)

            End If

            If e.DataRow("材料标准") = "南网" Then

                Dim ndr As Row = Tables("角钢进料表明细").AddNew

                ndr("进料表编号") = e.DataRow("进料表编号")

                ndr("工程名称") = e.DataRow("工程名称")

                ndr("塔型") = e.DataRow("塔型")

                ndr("材料标准") = e.DataRow("材料标准")

                ndr("仓储配料员") = e.DataRow("仓储配料员")

                ndr("审核") = e.DataRow("审核")

                ndr("编制人") = e.DataRow("编制人")

                ndr.Move(0)

            End If

            If e.DataRow.GetChildRows("角钢进料表明细").Count > 0

                Dim cnt As Integer = DataTables("角钢进料表明细").Compute("count(进料表编号)","进料表编号 = \'" & e.DataRow("进料表编号") & "\'and (U8出库=false and 处置_重派=false)")                                                                                          

                e.DataRow("状态_U8出库") = (cnt=0)

                cnt  = DataTables("角钢进料表明细").Compute("count(进料表编号)","进料表编号 = \'" & e.DataRow("进料表编号") & "\'and (未发数量 > 0 or 未发数量 is null)")

                e.DataRow("状态_发料完成") = (cnt=0)

            End If

        End If

End Select


--  作者:有点蓝
--  发布时间:2019/7/31 14:35:00
--  

Select Case e.DataCol.name

    Case "进料表编号","材料标准"

        If e.DataRow.IsNull("进料表编号") Then

            DataTables("角钢进料表明细").DeleteFor("进料表编号=\'" & e.DataRow("进料表编号") & "\'")

            e.DataRow("状态_发料完成") = False

            e.DataRow("状态_U8出库") = False

        Else

Dim ndr As Row = Tables("角钢进料表明细").AddNew

ndr("进料表编号") = e.DataRow("进料表编号")

ndr("工程名称") = e.DataRow("工程名称")

ndr("塔型") = e.DataRow("塔型")

ndr("仓储配料员") = e.DataRow("仓储配料员")

ndr("审核") = e.DataRow("审核")

ndr("编制人") = e.DataRow("编制人")

ndr.Move(0)


If e.DataRow("材料标准") <> "多种" Then

    ndr("材料标准") = e.DataRow("材料标准")

End If

If e.DataRow.GetChildRows("角钢进料表明细").Count > 0

……


--  作者:13775189031
--  发布时间:2019/7/31 16:31:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:角钢发料管理台账.foxdb


--  作者:13775189031
--  发布时间:2019/7/31 16:34:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:角钢发料管理台账.rar

请老师看看,按照上面的代码改了,但是在表“角钢进料台账”里列“材料标准”选择了“多种”,在表“角钢进料表明细里”还是会自动显示“多种”

--  作者:有点蓝
--  发布时间:2019/7/31 16:37:00
--  
开发者密码?
--  作者:13775189031
--  发布时间:2019/7/31 16:39:00
--  
还有一个奇怪的现象,改了代码以后,在表“角钢进料明细”里填写“派料支数”以后,会自动增加一行,是什么原因?
--  作者:有点蓝
--  发布时间:2019/7/31 16:43:00
--  
项目开发者密码?
--  作者:13775189031
--  发布时间:2019/7/31 16:45:00
--  
147258


--  作者:有点蓝
--  发布时间:2019/7/31 17:05:00
--  
明细表这段代码的原因

If e.DataCol.Name = "进料表编号" Then
    If e.NewValue Is Nothing Then
        e.DataRow("工程名称") = Nothing
        e.DataRow("塔型") = Nothing
        e.DataRow("材料标准") = Nothing
        e.DataRow("仓储配料员") = Nothing
        e.DataRow("审核") = Nothing
        e.DataRow("编制人") = Nothing
    Else
        Dim dr3 As DataRow
        dr3 = DataTables("角钢进料台账").Find("[进料表编号] = \'" & e.NewValue & "\'")
        If dr3 IsNot Nothing
            e.DataRow("工程名称") = dr3("工程名称")
            e.DataRow("塔型") = dr3("塔型")
            e.DataRow("材料标准") = dr3("材料标准")
            e.DataRow("仓储配料员") = dr3("仓储配料员")
            e.DataRow("审核") = dr3("审核")
            e.DataRow("编制人") = dr3("编制人")
        End If
    End If
End If



--  作者:有点蓝
--  发布时间:2019/7/31 17:06:00
--  
主表事件试试这样改改

……
        Else
            Dim ndr As Row = Tables("角钢进料表明细").AddNew
systemready = false
            ndr("进料表编号") = e.DataRow("进料表编号")
systemready = true
            ndr("工程名称") = e.DataRow("工程名称")
            ndr("塔型") = e.DataRow("塔型")
            ndr("仓储配料员") = e.DataRow("仓储配料员")
            ndr("审核") = e.DataRow("审核")
            ndr("编制人") = e.DataRow("编制人")
            ndr.Move(0)
            If e.DataRow("材料标准") <> "多种" Then
                ndr("材料标准") = e.DataRow("材料标准")
            End If
            If e.DataRow.GetChildRows("角钢进料表明细").Count > 0
                Dim cnt As Integer = DataTables("角钢进料表明细").Compute("count(进料表编号)","进料表编号=\'" & e.NewValue  & "\' and (U8出库=false and 处置_重派=false)")
                e.DataRow("状态_U8出库") = (cnt=0)
                cnt  = DataTables("角钢进料表明细").Compute("count(进料表编号)","进料表编号=\'" & e.NewValue  & "\' and (未发数量 > 0 or 未发数量 is null)")
                e.DataRow("状态_发料完成") = (cnt=0)
            End If
        End If