以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如何子表增加,主表中自动增加相关记录  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=92283)

--  作者:chh2321
--  发布时间:2016/10/31 11:06:00
--  [求助]如何子表增加,主表中自动增加相关记录
 请教专家:
1. 表1是主表,表2是子表
2. 我想在表2中增加记录后,表1中自动增加相关记录

比如:
图片点击可在新窗口打开查看

表1就是这样:
图片点击可在新窗口打开查看

表2中增加数据:
图片点击可在新窗口打开查看

表1就会自动增加相关记录,如下:
图片点击可在新窗口打开查看

请问如何编写代码?

--  作者:有点蓝
--  发布时间:2016/10/31 14:17:00
--  
正常都是先增加父表再增加子表,反过来是有什么特殊原因?

If e.DataCol.Name = "编号" Then 
    If e.NewValue > "" Then 
        Dim dr As DataRow
        dr = DataTables("主表").Find("[编号] = \'" & e.NewValue & "\'")
        If dr Is Nothing Then 
            dr = DataTables("主表").AddNew()
            dr("编号") = e.DataRow("编号")
        End If
    End If
End If

--  作者:feixianzhi
--  发布时间:2016/10/31 14:30:00
--  
我理解,表2应该是明细表,表1是汇总表。不想用统计功能,而想在表2中录入明细数据后,表1自动统计。
--  作者:chh2321
--  发布时间:2016/10/31 15:18:00
--  
 原因是子表中想批量导入数据,主表自动生成编号和姓名,然后再根据主表中新成员(编号和姓名)补充其他信息,如出生日期等等。
--  作者:chh2321
--  发布时间:2016/10/31 15:40:00
--  

1. 我想让主表中编号和姓名同时增加,而不是只增加编号
2. 如果子表中增加了主表中已有编号和姓名,则主表不增加新记录(即主表中编号列是主键列,不允许重复)。

--  作者:有点蓝
--  发布时间:2016/10/31 16:18:00
--  
看懂代码,原理是一样的:http://www.foxtable.com/webhelp/scr/1284.htm
--  作者:chh2321
--  发布时间:2016/11/1 3:00:00
--  
我写了这样一段代码,附到表2 DataColChanged事件中:

If e.DataCol.Name = "编号"
    If e.NewValue > "" Then
        Dim dr As DataRow
        dr = DataTables("表1").Find("[编号] = \'" & e.NewValue & "\'And [姓名] = \'" & e.NewValue & "\'")
        If dr Is Nothing Then
            dr = DataTables("表1").AddNew()
            dr("编号") = e.DataRow("编号") 
            dr("姓名") = e.DataRow("姓名")
        End If
    End If
End If

运行后发现,在表2中逐行输入编号和姓名,表1中只会新增编号,姓名为空;如果表2中先输入姓名,然后输入编号,表1中就会新增编号和姓名。

我想表2中输入编号和姓名,表1中就能同时新增编号和姓名,如何解决,请老师指教!  谢谢!

--  作者:有点青
--  发布时间:2016/11/1 8:37:00
--  

 可以参考这里

 

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

 


--  作者:有点蓝
--  发布时间:2016/11/1 9:13:00
--  
http://www.foxtable.com/webhelp/scr/0625.htm

If e.DataCol.Name = "编号" OrElse e.DataCol.Name = "姓名"
    If e.DataRow.Isnull("编号")  = False
        Dim dr As DataRow
        dr = DataTables("表1").Find("[编号] = \'" & e.DataRow("编号")  & "\'")
        If dr Is Nothing Then
            dr = DataTables("表1").AddNew()
        End If
        dr("编号") = e.DataRow("编号")
        dr("姓名") = e.DataRow("姓名")
    End If
End If

或者

Select Case e.DataCol.Name
    Case "编号","姓名"
        If e.DataRow.Isnull("编号")  = False
            Dim dr As DataRow
            dr = DataTables("表1").Find("[编号] = \'" & e.DataRow("编号")  & "\'")
            If dr Is Nothing Then
                dr = DataTables("表1").AddNew()
            End If
            dr("编号") = e.DataRow("编号")
            dr("姓名") = e.DataRow("姓名")
        End If
End Select

--  作者:chh2321
--  发布时间:2016/11/1 12:56:00
--  
非常感谢“有点蓝”老师,终于得到解决了