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


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

主题:增加行前查找

美女呀,离线,留言给我吧!
13775189031
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:807 积分:5579 威望:0 精华:0 注册:2017/12/19 14:46:00
增加行前查找  发帖心情 Post By:2018/6/7 17:18:00 [只看该作者]

  Case "领料情况_不分机组"
        If e.newvalue = False Then
            DataTables("领料清单").DeleteFor("编号='" & e.DataRow("编号") & "'")
        Else
             If e.DataRow("物资说明") = "紧固件" Then
                Dim ndr1 As DataRow = DataTables("领料清单").Find("预算编号 = '" & e.NewValue & "'")
                If ndr1 Is Nothing Then
                    Dim ndr2 As DataRow = DataTables("领料清单").AddNew
                    ndr2("编号") = e.DataRow("编号")
                    ndr2("预算编号") = e.DataRow("预算编号")
                    ndr2("生产令号") = e.DataRow("生产令号")
                    ndr2("项目名称") = e.DataRow("项目名称")
                    ndr2("物资说明") = e.DataRow("物资说明")
                    ndr2("单位") = "批"
                    ndr2("领料数量") = "1"
                    ndr2("领料日期") = Date.today
                Else
                    e.Cancel = True
                End If
            End If
  
想实现,增加行之前查找如果预算编号相同的,则不再增加行,要怎么改?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/7 17:23:00 [只看该作者]

Case "领料情况_不分机组"
    If e.newvalue = False Then
        DataTables("领料清单").DeleteFor("编号='" & e.DataRow("编号") & "'")
    Else
        If e.DataRow("物资说明") = "紧固件" Then
            Dim ndr1 As DataRow = DataTables("领料清单").Find("预算编号 = '" & e.DataRow("预算编号") & "'")
            If ndr1 Is Nothing Then
                Dim ndr2 As DataRow = DataTables("领料清单").AddNew
            End If
            ndr2("编号") = e.DataRow("编号")
            ndr2("预算编号") = e.DataRow("预算编号")
            ndr2("生产令号") = e.DataRow("生产令号")
            ndr2("项目名称") = e.DataRow("项目名称")
            ndr2("物资说明") = e.DataRow("物资说明")
            ndr2("单位") = "批"
            ndr2("领料数量") = "1"
            ndr2("领料日期") = Date.today           
        End If


 回到顶部
美女呀,离线,留言给我吧!
13775189031
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:807 积分:5579 威望:0 精华:0 注册:2017/12/19 14:46:00
  发帖心情 Post By:2018/6/8 9:24:00 [只看该作者]

显示未声明名称ndr2,现改成以下:

Case "领料情况_不分机组"

    If e.newvalue = False Then
        DataTables("领料清单").DeleteFor("编号='" & e.DataRow("编号") & "'")
    Else
 If e.DataRow("物资说明") = "紧固件" Then
                Dim ndr1 As DataRow = DataTables("领料清单").Find("预算编号 = '" & e.DataRow("预算编号") & "'")
                If ndr1 Is Nothing Then
                    Dim ndr As DataRow = DataTables("领料清单").AddNew
                End If
                ndr1("编号") = e.DataRow("编号")
                ndr1("预算编号") = e.DataRow("预算编号")
                ndr1("生产令号") = e.DataRow("生产令号")
                ndr1("项目名称") = e.DataRow("项目名称")
                ndr1("物资说明") = e.DataRow("物资说明")
                ndr1("单位") = "批"
                ndr1("领料数量") = "1"
                ndr1("领料日期") = Date.today
            End If
        End If

但调试过程中显示:
.NET Framework 版本:2.0.50727.8762
Foxtable 版本:2018.3.9.1
错误所在事件:表,物资明细表,DataColChanged
详细错误信息:
调用的目标发生了异常。
未将对象引用设置到对象的实例。


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/8 9:25:00 [只看该作者]

Case "领料情况_不分机组"
    If e.newvalue = False Then
        DataTables("领料清单").DeleteFor("编号='" & e.DataRow("编号") & "'")
    Else
        If e.DataRow("物资说明") = "紧固件" Then
            Dim ndr2 As DataRow = DataTables("领料清单").Find("预算编号 = '" & e.DataRow("预算编号") & "'")
            If ndr2 Is Nothing Then
                ndr2 = DataTables("领料清单").AddNew
            End If
            ndr2("编号") = e.DataRow("编号")
            ndr2("预算编号") = e.DataRow("预算编号")
            ndr2("生产令号") = e.DataRow("生产令号")
            ndr2("项目名称") = e.DataRow("项目名称")
            ndr2("物资说明") = e.DataRow("物资说明")
            ndr2("单位") = "批"
            ndr2("领料数量") = "1"
            ndr2("领料日期") = Date.today           
        End If

 回到顶部
美女呀,离线,留言给我吧!
13775189031
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:807 积分:5579 威望:0 精华:0 注册:2017/12/19 14:46:00
  发帖心情 Post By:2018/6/8 9:45:00 [只看该作者]

以下是要生成两行的情况,先生成两行,然后查找如果预算编号相同则不再生成!
 
Case "领料情况_分机组"
    If e.newvalue = False Then
        DataTables("领料清单").DeleteFor("编号='" & e.DataRow("编号") & "'")
    ElseIf e.DataRow("物资说明") = "紧固件" Then
                For i As Integer = 1 To 2
                Next
                Dim ndr1 As DataRow = DataTables("领料清单").Find("预算编号 = '" & e.DataRow("预算编号") & "'")
                If ndr1 Is Nothing Then
                End If
                Dim ndr As DataRow = DataTables("领料清单").AddNew
                ndr("编号") = e.DataRow("编号")
                ndr("预算编号") = e.DataRow("预算编号")
                ndr("物资说明") = e.DataRow("物资说明")
                ndr("单位") = "批"
                ndr("领料数量") = "0.5"
                ndr("领料日期") = Date.today
            End If
        End If

我这样编出来生成的是一行,而且没有查找!怎么改?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/8 9:49:00 [只看该作者]

    Case "领料情况_分机组"
        If e.newvalue = False Then
            DataTables("领料清单").DeleteFor("编号='" & e.DataRow("编号") & "'")
           
        ElseIf e.DataRow("物资说明") = "紧固件" Then
            Dim ndr1 As DataRow = DataTables("领料清单").Find("预算编号 = '" & e.DataRow("预算编号") & "'")
            If ndr1 Is Nothing Then
                For i As Integer = 1 To 2
                    Dim ndr As DataRow = DataTables("领料清单").AddNew
                    ndr("编号") = e.DataRow("编号")
                    ndr("预算编号") = e.DataRow("预算编号")
                    ndr("物资说明") = e.DataRow("物资说明")
                    ndr("单位") = "批"
                    ndr("领料数量") = "0.5"
                    ndr("领料日期") = Date.today
                Next
            End If
        End If
       

 回到顶部
美女呀,离线,留言给我吧!
13775189031
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:807 积分:5579 威望:0 精华:0 注册:2017/12/19 14:46:00
  发帖心情 Post By:2018/6/8 10:17:00 [只看该作者]

 Case "领料情况_分机组"
        If e.newvalue = False Then
            DataTables("领料清单").DeleteFor("编号='" & e.DataRow("编号") & "'")
        Else
            If e.DataRow("物资说明") = "原材料" Then
                For i As Integer = 1 To 2
                    Dim ndr As DataRow = DataTables("领料清单").AddNew
                    ndr("编号") = e.DataRow("编号")
                    ndr("预算编号") = e.DataRow("预算编号")
                    ndr("物资说明") = e.DataRow("物资说明")
                    ndr("名称") = e.DataRow("物资名称")
                    ndr("规格") = e.DataRow("规格")
                    ndr("材质") = e.DataRow("材质")
                    ndr("中标单位") = e.DataRow("中标情况_中标单位")
                    ndr("领料日期") = Date.today
                Next
            End If
If e.DataRow("物资说明") = "紧固件" Then
            Dim ndr1 As DataRow = DataTables("领料清单").Find("预算编号 = '" & e.DataRow("预算编号") & "'")
            If ndr1 Is Nothing Then
                For i As Integer = 1 To 2
                    Dim ndr As DataRow = DataTables("领料清单").AddNew
                    ndr("编号") = e.DataRow("编号")
                    ndr("预算编号") = e.DataRow("预算编号")
                    ndr("物资说明") = e.DataRow("物资说明")
                    ndr("单位") = "批"
                    ndr("领料数量") = "0.5"
                    ndr("领料日期") = Date.today
                Next
            End If
        End If

和另一组代码合并后,提示错误编码else


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/8 10:21:00 [只看该作者]


Select Case e.DataCol.name
    Case "领料情况_分机组"
        If e.newvalue = False Then
            DataTables("领料清单").DeleteFor("编号='" & e.DataRow("编号") & "'")
        Else
            If e.DataRow("物资说明") = "原材料" Then
                For i As Integer = 1 To 2
                    Dim ndr As DataRow = DataTables("领料清单").AddNew
                    ndr("编号") = e.DataRow("编号")
                    ndr("预算编号") = e.DataRow("预算编号")
                    ndr("物资说明") = e.DataRow("物资说明")
                    ndr("名称") = e.DataRow("物资名称")
                    ndr("规格") = e.DataRow("规格")
                    ndr("材质") = e.DataRow("材质")
                    ndr("中标单位") = e.DataRow("中标情况_中标单位")
                    ndr("领料日期") = Date.today
                Next
            End If
            If e.DataRow("物资说明") = "紧固件" Then
                Dim ndr1 As DataRow = DataTables("领料清单").Find("预算编号 = '" & e.DataRow("预算编号") & "'")
                If ndr1 Is Nothing Then
                    For i As Integer = 1 To 2
                        Dim ndr As DataRow = DataTables("领料清单").AddNew
                        ndr("编号") = e.DataRow("编号")
                        ndr("预算编号") = e.DataRow("预算编号")
                        ndr("物资说明") = e.DataRow("物资说明")
                        ndr("单位") = "批"
                        ndr("领料数量") = "0.5"
                        ndr("领料日期") = Date.today
                    Next
                End If
            End If
        end if
end select

 回到顶部
美女呀,离线,留言给我吧!
13775189031
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:807 积分:5579 威望:0 精华:0 注册:2017/12/19 14:46:00
  发帖心情 Post By:2018/6/8 10:33:00 [只看该作者]

Select Case e.DataCol.Name
    Case "到货数量","到货_批次"
        If e.DataRow("到货数量") = 0 Then
            DataTables("物资检验详单").DeleteFor("编号='" & e.DataRow("编号") & "'")
        Else
            If e.DataRow("物资说明") = "原材料" Then
                For i As Integer = 1 To e.DataRow("到货_批次")
                    Dim ndr As DataRow = DataTables("物资检验详单").AddNew
                    ndr("编号") = e.DataRow("编号")
                    ndr("预算编号") = e.DataRow("预算编号")
                    ndr("生产令号") = e.DataRow("生产令号")
                    ndr("项目名称") = e.DataRow("项目名称")
                    ndr("物资说明") = e.DataRow("物资说明")
                    ndr("物资名称") = e.DataRow("物资名称")
                    ndr("规格") = e.DataRow("规格")
                    ndr("材质") = e.DataRow("材质")
                Next
            End If
End select

上面的代码可以根据到货数量删减增加行,但是“到货批次”修改的话,无法删减,比如“到货批次”由原来的3改成2,则自动生成不能删减为2行,而是另外增加2行,总共增加了5行!
要怎么改?



 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/8 11:03:00 [只看该作者]

Select Case e.DataCol.Name
    Case "到货数量","到货_批次"
        If e.DataRow("到货数量") = 0 Then
            DataTables("物资检验详单").DeleteFor("编号='" & e.DataRow("编号") & "'")
        Else
            If e.DataRow("物资说明") = "原材料" Then
                DataTables("物资检验详单").DeleteFor("编号='" & e.DataRow("编号") & "'")
                For i As Integer = 1 To e.DataRow("到货_批次")
                    Dim ndr As DataRow = DataTables("物资检验详单").AddNew
                    ndr("编号") = e.DataRow("编号")
                    ndr("预算编号") = e.DataRow("预算编号")
                    ndr("生产令号") = e.DataRow("生产令号")
                    ndr("项目名称") = e.DataRow("项目名称")
                    ndr("物资说明") = e.DataRow("物资说明")
                    ndr("物资名称") = e.DataRow("物资名称")
                    ndr("规格") = e.DataRow("规格")
                    ndr("材质") = e.DataRow("材质")
                Next
            End If
End select

 回到顶部
总数 11 1 2 下一页