以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 表A 填入数据时,数据自动写入表B  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=102295)

--  作者:静听枫雨
--  发布时间:2017/6/16 18:37:00
--  [求助] 表A 填入数据时,数据自动写入表B

If e.DataCol.Name = "存款客户" OrElse e.DataCol.Name = "客户ID" Then
    If e.DataRow("存款客户") <> Nothing AndAlso e.DataRow("客户ID") <> Nothing Then
        Dim r2 As DataRow = DataTables("UserYE").Find("客户ID = \'" & e.DataRow("客户ID") & "\'")
        If r2 IsNot Nothing Then \'如果不为空,则在原来的数量上加上新的数量
            r2("客户余额") = r2("客户余额") + e.DataRow("存款金额")
            r2.Save
        Else
            Dim r3 As Row = Tables("UserYE").AddNew \'否则新增一行 
           r3("客户ID") = e.DataRow("客户ID")
           r3("客户名称") = e.DataRow("存款客户")
           r3("客户余额") = e.DataRow("存款金额")
            r3.Save
        End If
    End If
End If

 

下面是图片,客户ID 和客户名称都写过来了,就金额 没写过来

 


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

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2017/6/16 18:40:46编辑过]

--  作者:bootes29
--  发布时间:2017/6/16 18:47:00
--  
例子发上来
--  作者:静听枫雨
--  发布时间:2017/6/16 19:05:00
--  
代码,应该是没错吧
--  作者:2900819580
--  发布时间:2017/6/16 19:25:00
--  

有以下问题,

1、经常变动的应该只有存款金额,建议你第一行改为If e.DataCol.Name = "存款金额" then

2、r2("客户余额") = r2("客户余额") + e.DataRow("存款金额")  当你的客户ID或客户名称修改时,就会再次累加r2("客户余额")
3、第二行需要改成:If e.DataRow.IsNull("存款客户") = False AndAlso e.DataRow.IsNull("客户ID") = False Then

 

 

 

If e.DataCol.Name = "存款客户" OrElse e.DataCol.Name = "客户ID" Then
    If e.DataRow("存款客户") <> Nothing AndAlso e.DataRow("客户ID") <> Nothing Then
        Dim r2 As DataRow = DataTables("UserYE").Find("客户ID = \'" & e.DataRow("客户ID") & "\'")
        If r2 IsNot Nothing Then \'如果不为空,则在原来的数量上加上新的数量
            r2("客户余额") = r2("客户余额") + e.DataRow("存款金额")
            r2.Save
        Else
            Dim r3 As Row = Tables("UserYE").AddNew \'否则新增一行 
           r3("客户ID") = e.DataRow("客户ID")
           r3("客户名称") = e.DataRow("存款客户")
           r3("客户余额") = e.DataRow("存款金额")
            r3.Save
        End If
    End If
End If


--  作者:有点蓝
--  发布时间:2017/6/16 20:35:00
--  
应该使用Compute进行合计,而不是进行累加

r2("客户余额") = e.Datatable.Compute("sum(存款金额)","关联条件")

--  作者:静听枫雨
--  发布时间:2017/6/16 20:57:00
--  
关联条件 怎么写。以客户ID一样就行吗?
--  作者:有点蓝
--  发布时间:2017/6/16 21:02:00
--  
参考Find的用法
--  作者:静听枫雨
--  发布时间:2017/6/16 21:05:00
--  
谢谢,有点蓝版主和2900819580  指导。  有点蓝老师,不能使用您说的累计,累计在删除的情况下金额会重新统计,然后再写到客户余额里,这样就不对了。

If e.DataCol.Name = "存款金额" Then
   If e.DataRow.IsNull("存款客户") = False AndAlso e.DataRow.IsNull("客户ID") = False Then
        Dim dt As Date = Date.Now
        Dim r2 As DataRow = DataTables("UserYE").Find("客户ID = \'" & e.DataRow("客户ID") & "\'")
        If r2 IsNot Nothing Then \'如果不为空,则在原来的数量上加上新的数量
            r2("客户余额") = r2("客户余额") + e.DataRow("存款金额")
            r2("更新日期") = dt
            r2.Save
        Else
            Dim r3 As Row = Tables("UserYE").AddNew \'否则新增一行
            r3("客户ID") = e.DataRow("客户ID")
            r3("客户名称") = e.DataRow("存款客户")
            r3("客户余额") = e.DataRow("存款金额")
            r3("更新日期") = dt
            r3.Save
        End If
    End If

帅哥,在线噢!
[此贴子已经被作者于2017/6/16 21:32:03编辑过]