以文本方式查看主题

-  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=122349)

--  作者:初心不改再说未来
--  发布时间:2018/7/23 17:33:00
--  请问老师,表A中通过窗口新增了一行数据后如何在表B中同时新增一行数据
表A中有个订单编号列,(通过日期自动生成,非表达式列),通过窗口提交数据后形成一行新数据
点击保存按钮后,
如何在表B的订单编号列同时新增一条数据,并且将表A的编号同时自动赋值到表B的编号列中?

--  作者:有点甜
--  发布时间:2018/7/23 17:45:00
--  

参考

 

http://www.foxtable.com/webhelp/scr/2490.htm

 


--  作者:初心不改再说未来
--  发布时间:2018/7/23 20:20:00
--  
我就是看的这个帮助,但是按照帮助代码写进去,表B没有新增数据,是我代码有问题吗?

Select Case e.DataCol.name
    Case "订单编号"
        Dim dr As DataRow = DataTables("计调操作表").Find("订单编号 = \'" & e.OldValue & "\'")
        If dr Is Nothing Then 
            dr = DataTables("计调操作表").AddNew()
            dr("订单编号") = e.DataRow("订单编号")
            dr("客人姓名") = e.DataRow("客人姓名")
            dr("出行行程") = e.DataRow("出行行程")
        Else
            dr("订单编号") = e.DataRow("订单编号")
        End If
    Case "客人姓名","出行行程"
        Dim dr As DataRow = DataTables("计调操作表").Find("订单编号 = \'" & e.DataRow("订单编号") & "\'")
        If dr IsNot Nothing Then
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        End If
End Select



Dim drr As DataRow = DataTables("计调操作表").Find("订单编号 = \'" & e.DataRow("订单编号") & "\'")
If drr IsNot Nothing Then
    drr.Delete()
End If





\'根据订单表客人信息,自动计算出订单总人数
If e.DataCol.name = "客人姓名" Then
    If e.NewValue = Nothing Then
        e.DataRow("订单人数") = 0
    Else
        e.DataRow("订单人数") = e.newvalue.split(",").length
    End If    
End If

\'根据出团时间自动生成订单编号(以后看下中间的-能不能去掉)
If e.DataCol.Name = "出团时间" Then
    If e.DataRow.IsNull("出团时间") Then
        e.DataRow("订单编号") = Nothing
    Else
        Dim bh As String = Format(e.DataRow("出团时间"),"yyyyMMdd") \'取得编号的8位前缀
        If e.DataRow("订单编号").StartsWith(bh) = False \'如果编号的前8位不符
            Dim max As String
            Dim idx As Integer
            max = e.DataTable.Compute("Max(订单编号)","出团时间 = #" & e.DataRow("出团时间") & "# And [_Identify] <> " & e.DataRow("_Identify")) \'取得该天的最大编号
            If max > "" Then \'如果存在最大编号
                idx = CInt(max.Substring(9,3)) + 1 \'获得最大编号的后三位顺序号,并加1
            Else
                idx = 1 \'否则顺序号等于1
            End If
            e.DataRow("订单编号") = bh & "-" & Format(idx,"000")
        End If
    End If
End If

--  作者:有点蓝
--  发布时间:2018/7/23 20:23:00
--  
这段代码去掉

Dim drr As DataRow = DataTables("计调操作表").Find("订单编号 = \'" & e.DataRow("订单编号") & "\'")
If drr IsNot Nothing Then
    drr.Delete()
End If

--  作者:初心不改再说未来
--  发布时间:2018/7/23 20:41:00
--  
那订单这边删除行了,就没法和库存这边同步了呀,本来这段代码的意思就是要同步删除的吧?

我测试了,可以新加了,但是没了同步删除功能

--  作者:有点蓝
--  发布时间:2018/7/23 20:52:00
--  
同步删除到删除事件写代码,不同事件有不同的用法,并不是所有代码 放到一个事件里完成