以文本方式查看主题 - 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 -- 非常感谢“有点蓝”老师,终于得到解决了 |