Foxtable(狐表)用户栏目专家坐堂 → 增加行


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

主题:增加行

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110784 积分:563852 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

……


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110784 积分:563852 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/31 16:37:00 [显示全部帖子]

开发者密码?

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110784 积分:563852 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/31 16:43:00 [显示全部帖子]

项目开发者密码?

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110784 积分:563852 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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



 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110784 积分:563852 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110784 积分:563852 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/1 9:16:00 [显示全部帖子]

"多种"这个我测试没有问题。

“派料支数”是因为会在datacolchanged调用台账的重置列功能

Dim dr2 As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "实发支数_1","实发支数_2","实发支数_3","派料支数","处置_代用_数量"
        If dr2.IsNull("派料支数") AndAlso dr2.IsNull("实发支数_1") AndAlso dr2.IsNull("实发支数_2") AndAlso dr2.IsNull("实发支数_3") AndAlso dr2.IsNull("处置_代用_数量") Then '如果数量或单价为空
            dr2("未发数量") = Nothing
        Else
            dr2("未发数量") = dr2("派料支数") - dr2("实发支数_1")- dr2("实发支数_2")- dr2("实发支数_3")-dr2("处置_代用_数量")
        End If
    Case "未发数量","U8出库","处置_重派"
        Dim dr1 As DataRow = DataTables("角钢进料台账").Find("[进料表编号] = '" & e.DataRow("进料表编号") & "'")
        If dr1 IsNot Nothing Then
            DataTables("角钢进料台账").DataCols("进料表编号").RaiseDataColChanged(dr1)
        End If
End Select

先理清自己的逻辑思路,父表子表之间在互相推手打太极,你触发我,我数据变化又改改你的数据。父表一般对子表进行统计整合数据,不要过多的依赖关联进行各种逻辑控制。建议还是设计窗口来处理

 回到顶部