Foxtable(狐表)用户栏目专家坐堂 → 【求助】列值第一次录入便生成数据,那么我修改列值之后,直接修改对应记录,而不是新增记录


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

主题:【求助】列值第一次录入便生成数据,那么我修改列值之后,直接修改对应记录,而不是新增记录

帅哥哟,离线,有人找我吗?
李孝春
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
【求助】列值第一次录入便生成数据,那么我修改列值之后,直接修改对应记录,而不是新增记录  发帖心情 Post By:2017/6/20 9:26:00 [只看该作者]

【求助】列值第一次录入便生成数据,那么我修改列值之后,直接修改对应记录,而不是新增记录


代码如下:
Select Case e.DataCol.Name
    Case "单价"
        If e.DataCol.Name = "单价" Then
            e.DataRow("金额")=e.DataRow("单价")*e.DataRow("数量")
        End If
    Case "数量"
        If e.DataCol.Name = "数量" Then
            e.DataRow("金额")=e.DataRow("单价")*e.DataRow("数量")
            '以下是当数量列发生变动时候,写入信息到货物库存表里
            Tables("货物库存").AddNew()
            Tables("货物库存").Current("货名")= e.DataRow("货名") 
            Tables("货物库存").Current("出库数量")= e.DataRow("数量")
            Tables("货物库存").Current("出库日期")= e.DataRow("订单日期")
            Tables("货物库存").Current("出库编号")= e.DataRow("销售年编号")
            
           '怎么实现在数量被我修改后,顺利实行下面代码呢?而不是新增一条记录!
            Dim pr As DataRow
            pr = DataTables("货物库存").Find("货名 = '" & e.DataRow("货名") & "' And 出库编号 = '" & e.DataRow("销售年编号") & "'")
            If pr IsNot Nothing Then
                pr("出库数量")= pr("出库数量")  + e.NewValue - e.OldValue
            End If
        End If
End Select
[此贴子已经被作者于2017/6/20 9:26:17编辑过]

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/20 9:42:00 [只看该作者]

Select Case e.DataCol.Name
    Case "单价"
        If e.DataCol.Name = "单价" Then
            e.DataRow("金额")=e.DataRow("单价")*e.DataRow("数量")
        End If
    Case "数量"
        If e.DataCol.Name = "数量" Then
            Dim pr As DataRow
            pr = DataTables("货物库存").Find("货名 = '" & e.DataRow("货名") & "' And 出库编号 = '" & e.DataRow("销售年编号") & "'")
            If pr IsNot Nothing Then
                pr("出库数量")= pr("出库数量")  + e.NewValue - e.OldValue
            Else
                e.DataRow("金额")=e.DataRow("单价")*e.DataRow("数量")
                '以下是当数量列发生变动时候,写入信息到货物库存表里
                Dim nr As Row = Tables("货物库存").AddNew()
                nr("货名")= e.DataRow("货名")
                nr("出库数量")= e.DataRow("数量")
                nr("出库日期")= e.DataRow("订单日期")
                nr("出库编号")= e.DataRow("销售年编号")
            End If          
        End If
End Select

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点色)Select Case e.DataCol.Name?&n...  发帖心情 Post By:2017/6/20 9:53:00 [只看该作者]


现在是可以不新增空值行了,效果如下:

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

如果再次增加同样货名的东西,就会修改总值,而不是新增一条记录进货物库存表里,如果我把这条订单记录删除,就会把所有当前的记录全部删除,而不是在数量上减去我对应删除行数量,重新计算成为新值。


图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:4.png
图片点击可在新窗口打开查看


[此贴子已经被作者于2017/6/20 10:02:50编辑过]

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/20 9:56:00 [只看该作者]

 你删除记录的时候,查找对应的行,减去相应的值,不就好了?改写你的DataRowDeleting事件。

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点色) 你删除记录的时候,查找对应的...  发帖心情 Post By:2017/6/20 10:11:00 [只看该作者]

谢谢有点色老师

采用下面代码解决了
Dim dr As DataRow = DataTables("货物库存").Find("货名 = '" & e.DataRow("货名") & "' And 出库编号 = '" & e.DataRow("销售年编号") & "'")
If dr IsNot Nothing Then
    dr("出库数量")= dr("出库数量")  - e.DataRow("数量") 
    If dr("出库数量")= 0 Then
        dr.Delete()
    End If
End If

 回到顶部