Foxtable(狐表)用户栏目专家坐堂 → [求助]如何子表增加,主表中自动增加相关记录


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

主题:[求助]如何子表增加,主表中自动增加相关记录

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


加好友 发短信
等级:童狐 帖子:253 积分:2573 威望:0 精华:0 注册:2016/8/8 9:50:00
[求助]如何子表增加,主表中自动增加相关记录  发帖心情 Post By:2016/10/31 11:06:00 [只看该作者]

 请教专家:
1. 表1是主表,表2是子表
2. 我想在表2中增加记录后,表1中自动增加相关记录

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

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

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

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

请问如何编写代码?

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111407 积分:567105 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:503 积分:4002 威望:0 精华:0 注册:2016/6/7 7:45:00
  发帖心情 Post By:2016/10/31 14:30:00 [只看该作者]

我理解,表2应该是明细表,表1是汇总表。不想用统计功能,而想在表2中录入明细数据后,表1自动统计。

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


加好友 发短信
等级:童狐 帖子:253 积分:2573 威望:0 精华:0 注册:2016/8/8 9:50:00
  发帖心情 Post By:2016/10/31 15:18:00 [只看该作者]

 原因是子表中想批量导入数据,主表自动生成编号和姓名,然后再根据主表中新成员(编号和姓名)补充其他信息,如出生日期等等。

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


加好友 发短信
等级:童狐 帖子:253 积分:2573 威望:0 精华:0 注册:2016/8/8 9:50:00
  发帖心情 Post By:2016/10/31 15:40:00 [只看该作者]


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

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111407 积分:567105 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/31 16:18:00 [只看该作者]

看懂代码,原理是一样的:http://www.foxtable.com/webhelp/scr/1284.htm

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


加好友 发短信
等级:童狐 帖子:253 积分:2573 威望:0 精华:0 注册:2016/8/8 9:50:00
  发帖心情 Post By: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中就能同时新增编号和姓名,如何解决,请老师指教!  谢谢!

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


加好友 发短信
等级:二尾狐 帖子:573 积分:2961 威望:0 精华:0 注册:2016/10/27 14:33:00
  发帖心情 Post By:2016/11/1 8:37:00 [只看该作者]


 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111407 积分:567105 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:253 积分:2573 威望:0 精华:0 注册:2016/8/8 9:50:00
  发帖心情 Post By:2016/11/1 12:56:00 [只看该作者]

非常感谢“有点蓝”老师,终于得到解决了

 回到顶部
总数 12 1 2 下一页