Foxtable(狐表)用户栏目专家坐堂 → 增加一行数据的代码,执行无效


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

主题:增加一行数据的代码,执行无效

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


加好友 发短信
等级:六尾狐 帖子:1469 积分:9531 威望:0 精华:0 注册:2014/12/18 16:12:00
增加一行数据的代码,执行无效  发帖心情 Post By:2022/8/13 15:47:00 [显示全部帖子]

If e.DataCol.Name = "出库数量" Then
    Dim dr221 As DataRow = DataTables("批号表").Find("物料编号 = " & "'" & e.DataRow("物料编号") & "' and 批号 = '" & e.DataRow("批号") & "'  and 库位代号 = '" & e.DataRow("库位代号") & "' ") 
    If dr221 IsNot Nothing Then
        If e.newvalue > dr221("库存数量") Then 
            e.DataRow("出库数量") = dr221("库存数量")
            Dim dra As Row = Tables("出入库").AddNew()
            dra("出入库单号") = e.DataRow("出入库单号")
            dra("指采销单号") = e.DataRow("指采销单号")
            dra("指采销行号") = e.DataRow("指采销行号")
            dra("物料编号") = e.DataRow("物料编号")
            dra("指采销行号") = e.DataRow("指采销行号")
            dra("数量") = e.newvalue - dr221("库存数量") 
        End If
    End If
End If

上面代码的目的是:当在“出入库”这个表的“出库数量”一列发生变化时(比如是2000),就会去“批号表”那里找同物料编号、同批号、同库位代号的物料,看看其“库存数量”是多少(比如有1500)。此时,库存不够出货,当前“出库数量就会自动变为1500,同时在“出入库”里面自动新增一行数据,把剩余的500个无法出货的数据填入新增这行来。但是,现在执行起来,新增行的代码无效,估计是新增行时无法记住尚未出货的500这个数据。请问要怎样修改代码呢?谢谢。

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


加好友 发短信
等级:六尾狐 帖子:1469 积分:9531 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2022/8/15 8:46:00 [显示全部帖子]

If e.DataCol.Name = "出库数量" Then
    Dim dr221 As DataRow = DataTables("批号表").Find("物料编号 = " & "'" & e.DataRow("物料编号") & "' and 批号 = '" & e.DataRow("批号") & "'  and 库位代号 = '" & e.DataRow("库位代号") & "' ") 
    If dr221 IsNot Nothing Then
        If e.newvalue * (-1) > dr221("库存数量") Then 
            Dim q1 As Double = e.newvalue (-1) - dr221("库存数量")
            e.DataRow("出库数量") = dr221("库存数量") * (-1)
            Dim dra As Row = Tables("出入库").AddNew()
            dra("出入库单号") = e.DataRow("出入库单号")
            dra("指采销单号") = e.DataRow("指采销单号")
            dra("指采销行号") = e.DataRow("指采销行号")
            dra("物料编号") = e.DataRow("物料编号")
            dra("指采销行号") = e.DataRow("指采销行号")
            dra("出库数量") = q1
        End If
    End If
End If

上述2楼的修改我明白意思了。但是,(1) 增加行的代码不起作用,也就是说不会新增加行; (2) 上面红色那句不起作用,新的出库数量还是 e.newvalue 那个数,而不是 dr221("库存数量")。顺便说一下,我们"出入库"这个表的出库数量用负数表示的。谢谢。


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


加好友 发短信
等级:六尾狐 帖子:1469 积分:9531 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2022/8/15 15:01:00 [显示全部帖子]

            Dim Filter3 As String = "[物料编号] = '" & ctn(s-1) & "'"
            Dim drs3 As List(Of DataRow) = DataTables("出入库2").Select(Filter3)
            For Each dr3 As DataRow In drs3
                dr3("准备删除") = True
            Next

在执行上面代码之前,我们已经对“出入库2”进行过一次筛选了,但是执行上述代码后,它会把筛选之前的有关数据都列出来。那么要如何修改上面代码,让它只对筛选出的画面上的数据进行处理呢? 我把DataTables("出入库2").Select(Filter3) 代为 Tables("出入库2").Select(Filter3),但是系统不允许我这样改。谢谢。

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


加好友 发短信
等级:六尾狐 帖子:1469 积分:9531 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2022/8/15 15:29:00 [显示全部帖子]

If e.DataCol.Name = "出库数量" Then
    Dim dr221 As DataRow = DataTables("批号表").Find("物料编号 = " & "'" & e.DataRow("物料编号") & "' and 批号 = '" & e.DataRow("批号") & "'  and 库位代号 = '" & e.DataRow("库位代号") & "' ") 
msgbox(dr221 IsNot Nothing) - false 
    If dr221 IsNot Nothing Then
msgbox("e.newvalue=" & e.newvalue )
msgbox("库存数量=" & dr221("库存数量") )
        If e.newvalue * (-1) > dr221("库存数量") Then 
msgbox(1)
            Dim q1 As Double = e.newvalue (-1) - dr221("库存数量")
msgbox("q1 =" & q1 )
            e.DataRow("出库数量") = dr221("库存数量") * (-1)
msgbox("出库数量 =" & e.DataRow("出库数量"))
            Dim dra As Row = Tables("出入库").AddNew()
msgbox(2)
            dra("出入库单号") = e.DataRow("出入库单号")
            dra("指采销单号") = e.DataRow("指采销单号")
            dra("指采销行号") = e.DataRow("指采销行号")
            dra("物料编号") = e.DataRow("物料编号")
            dra("指采销行号") = e.DataRow("指采销行号")
            dra("出库数量") = q1
        End If
    End If
End If

批号表的库存是是 5 个的,我在“出入库2” 之 "出库数量" 输入 -10,上面代码执行时,只在第一个 msgbox 出现 false 这个提示,其他 msgbox 没有出现提示,当前行直接接受 newvalue (即-10). 也没有新增数据行。批号表的数量5也会被扣减掉。

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


加好友 发短信
等级:六尾狐 帖子:1469 积分:9531 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2022/8/15 15:54:00 [显示全部帖子]

7楼的问题解决了。谢谢。

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


加好友 发短信
等级:六尾狐 帖子:1469 积分:9531 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2022/8/16 10:47:00 [显示全部帖子]

If e.DataCol.name = "出库数量"  Then
If e.DataRow("出入库单号") <> "删除记录"  Then
If e.DataRow.isnull("批号") = False Then
    Dim dr221 As DataRow = DataTables("批号表").Find("物料编号 = '" & e.DataRow("物料编号") & "' and 批号 = '" & e.DataRow("批号") & "' and 仓库名称 = '" & e.DataRow("仓库名称") & "' and 库位代号 = '" & e.DataRow("库位代号") & "' ") 
    msgbox(dr221 IsNot Nothing)
    If dr221 IsNot Nothing Then
       msgbox("e.newvalue=" & e.newvalue )
       msgbox("库存数量=" & dr221("库存数量") )
        If e.newvalue * (-1) > dr221("库存数量") Then 
       msgbox(1)
            Dim q1 As Single = e.newvalue * (-1) - dr221("库存数量")
       msgbox("q1 =" & q1 )
            e.DataRow("出库数量") = dr221("库存数量") * (-1)
       msgbox("出库数量 =" & e.DataRow("出库数量"))
            dr221("库存数量") = dr221("库存数量") + e.DataRow("入库数量") + e.DataRow("出库数量") - e.OldValue
            dr221("批号变动记录") = "出入库变动:" & Date.now & " " & User.Name
            dr221("库存数量变动记录") = "出入库变动:" & Date.now & " " & User.Name
            Dim dra As Row = Tables("出入库").AddNew()
       msgbox(2)
            dra("出入库单号") = e.DataRow("出入库单号")
            dra("指采销单号") = e.DataRow("指采销单号")
            dra("指采销行号") = e.DataRow("指采销行号")
            dra("物料编号") = e.DataRow("物料编号")
            dra("要求交货日期") = e.DataRow("要求交货日期")
            dra("出库数量") = q1 * (-1)
        Else
            dr221("库存数量") = dr221("库存数量") + e.DataRow("入库数量") + e.DataRow("出库数量") - e.OldValue
            dr221("批号变动记录") = "出入库变动:" & Date.now & " " & User.Name
            dr221("库存数量变动记录") = "出入库变动:" & Date.now & " " & User.Name
        End If
    End If

End If
End If
End If

我知道6楼问题的原因了,所以对代码修改为上面那样子了。当输入物料编号时,另有代码会从“批号表”自动寻找 "批号" 和 "库位代号" 并填入“出入库”(代码见下面两段)。现在出现新的问题:批号表的库存有两个批号,其中旧批号是 5 个的。我在“出入库2” 之 "出库数量" 输入 -10,所有 msgbox 都会提示,当前行数据也会变成 -5,也新增加了数据行。批号表的旧批号的数量5也会被扣减掉。问题是,新增加的数据行还是自动出现批号表里 旧批号那行 的  "批号" 和 "库位代号" 。那么,要怎么样修改上面的代码呢?谢谢。

If e.DataCol.Name = "物料编号" Then
    If e.DataRow("出入") = "出库" Then
        Dim dr1 As DataRow = DataTables("批号表").Find("物料编号 = " & "'" & e.DataRow("物料编号") & "' And 库存数量 > " & 0,"批号") 
        If dr1 IsNot Nothing Then
            e.DataRow("批号") = dr1("批号")
        End If
    End If
End If

If e.DataCol.Name = "物料编号"  Then
    If e.DataRow("出入") = "出库" Then
'        Dim dr2 As DataRow = DataTables("批号表").Find("物料编号 = " & "'" & e.DataRow("物料编号") & "' and 批号 = '" & e.DataRow("批号") & "' And 库存数量 > " & 0,"库位代号") 
        Dim dr2 As DataRow = DataTables("批号表").Find("物料编号 = " & "'" & e.DataRow("物料编号") & "' And 库存数量 > " & 0,"批号,库位代号") 
        If dr2 IsNot Nothing Then
            e.DataRow("库位代号") = dr2("库位代号")
        End If
    End If
End If

 回到顶部
帅哥,在线噢!
edisontsui
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1469 积分:9531 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2022/8/16 12:48:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:问题求助.rar


请测试此项目。谢谢。

 回到顶部
帅哥,在线噢!
edisontsui
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1469 积分:9531 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2022/8/16 15:43:00 [显示全部帖子]

现在批号表有两个不同的批号,每个批号有 5个库存数量。在“出入库”输入“出入库单号”“行号”“仓库名称”“物料编号”后,再“出库数量”输入 -10,此时,批号表里面的第一个批号20210531(库位代号是“临时库位1”)才有5个库存,不够扣减,所以,“出入库”的“出库数量” 会按照批号(20210531)之数量5 输入 “-5”。然后,“出入库”应该会自动增加第二行,此行的批号应该是 20220725 (因为20210531这个批号的5个已经被扣减了),库位代号应该是“临时库位2”。现在的问题是,新增行的“批号”和“库位代号”不正确。

 回到顶部
帅哥,在线噢!
edisontsui
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1469 积分:9531 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2022/8/16 15:44:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:问题求助.rar


 回到顶部
帅哥,在线噢!
edisontsui
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1469 积分:9531 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2022/8/17 13:26:00 [显示全部帖子]

我增加了两句下面的代码,可以正确计算数据了,但是又出现另外一句警告,无法消除此警告:此行已从表中移除并且没有任何数据。BeginEdit() 将允许在此行中创建新数据
DataTables("批号表").deletefor("库存数量 <= 0") '新增此句

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:问题求助.rar




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