Foxtable(狐表)用户栏目专家坐堂 → foxtable父表与子表


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

主题:foxtable父表与子表

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


加好友 发短信
等级:幼狐 帖子:98 积分:737 威望:0 精华:0 注册:2020/3/10 15:14:00
foxtable父表与子表  发帖心情 Post By:2020/3/10 15:19:00 [显示全部帖子]

使用foxtable2019制作了两个数据统计表,想将两个表建立关联,即一个表数据进行更改或是增加删减,另一个表也随之自动相应更改。
按指南的方法建立父表与子表,可是实现不了这个功能。

使用指南:

Foxtable提供了非常简单高效的同步加载方法,你要做的只需在父表的AfterLoad事件中加上一行代码:

e.DataTable.LoadChildren("子表")

例如订单和订单明细通过订单编号建立关联,订单表动态加载,每次只加载一定数量的订单进行处理,为了每次加载订单后,能同步加载这些订单的订单明细,只需在订单表的AfterLoad事件加上代码:

e.DataTable.LoadChildren("订单明细")

是的,就是这么简单,因为你用的是Foxtable。

LoadChildren是DataTable的一个方法,用于加载子表数据,而且只加载那些父表已经存在对应行的子表数据。

语法

LoadChildren(子表名称)
LoadChildren(子表名称, 父表关联列名称, 子表关联列名称)

由LoadChildren的语法可以看出,如果父表和子表没有建立关联,我们可以通过指定关联列来实现同步加载,例如:

DataTables("订单").LoadChildren("订单明细", "订单编号", "订单编号")

并非只能通过父表加载子表数据,只要你愿意,也可以通过子表加载父表数据,语法:

DataTables("子表").LoadChildren("父表", "关联列", "关联列")

按这个方法实现不了。

求助达人们,如何制作这个关联?
[此贴子已经被作者于2020/3/10 15:23:02编辑过]

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


加好友 发短信
等级:幼狐 帖子:98 积分:737 威望:0 精华:0 注册:2020/3/10 15:14:00
  发帖心情 Post By:2020/3/10 16:05:00 [显示全部帖子]

刚接触foxtable,理解不深,谢谢你。
[此贴子已经被作者于2020/3/10 16:05:37编辑过]

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


加好友 发短信
等级:幼狐 帖子:98 积分:737 威望:0 精华:0 注册:2020/3/10 15:14:00
  发帖心情 Post By:2020/3/11 9:59:00 [显示全部帖子]

如下表,其中有各地的汇总,最后作了一个数据统计总表,把各个地点的数据汇总在一起,现在想实现在每个地点的表中增加数据或是修改数据后,数据统计那个总表也同步进行增加或是修改,不知道能不能实现。

昨天按“有点蓝”版主介绍的内容弄了半天,没弄明白。

我用的是foxtable2019免费版。



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

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

[此贴子已经被作者于2020/3/11 10:11:14编辑过]

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


加好友 发短信
等级:幼狐 帖子:98 积分:737 威望:0 精华:0 注册:2020/3/10 15:14:00
  发帖心情 Post By:2020/3/11 10:10:00 [显示全部帖子]

就如上图,想在道义汇总这个表中增加数据行,或是修改某一行数据(比如货物重量),在统计数据这个汇总表中就自动增加相应数据行,或是在对应数据行更新数据。

可以实现吗?


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


加好友 发短信
等级:幼狐 帖子:98 积分:737 威望:0 精华:0 注册:2020/3/10 15:14:00
  发帖心情 Post By:2020/3/11 11:08:00 [显示全部帖子]

之前同事都是用的excel表统计汇总数据的,每个表每天都要新增加内容,每月都要打印上报(不同地点的表格,上报格式不一样),每月还要和物流、财务对账,所以我想把每个表整合在一起,方便对账(这样不用对一家打开一个excel表)。不知道我说明白没有?

文件也没有什么,就是几个表,我只是想实现修改每个表的数据,汇总表就跟着自动更新(不用人为再输入,不是在excel中),领导或是同事数据时,打开一个表就可以查看各种数据(货物重量、地点、月份,重量合计等)。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:数据.rar

[此贴子已经被作者于2020/3/11 11:08:43编辑过]

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


加好友 发短信
等级:幼狐 帖子:98 积分:737 威望:0 精华:0 注册:2020/3/10 15:14:00
  发帖心情 Post By:2020/3/12 9:58:00 [显示全部帖子]

通过这两天的不断查找和试验,终于找到了基本解决我的需求的办法,这还要多谢fagg在2011年5月18日发表的一篇主题为“如何制作:在A表增加一行时,那么B表中自动增加一行?”的帖子(链接地址:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=10010),帖子中狐狸爸爸的回帖给我了很大启示。
现在在其中一个表中增加数据,另一个相关连的表也会同时增加:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table

基本满足了我的需求。

但是还存在一个问题,就是我在个表中增加一行时,比如最后一行序号是84,再增加一行序号相应就是85,体现在总表中,增加的一行序号也是85,而不是644(总表最后一行是643,再增加一行序号应该是644)。

如何能解决个表输入序号总表序号自动增加?
还求各位大大不吝赐教~~~~

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


加好友 发短信
等级:幼狐 帖子:98 积分:737 威望:0 精华:0 注册:2020/3/10 15:14:00
  发帖心情 Post By:2020/3/12 11:09:00 [显示全部帖子]

最左边的是行号。

我现在想实现的是在第一个表中增加一行,序号手动输入为85,增加完后在总表中增加的一行,序号自动为644。
现在这个实现的是在个表中输入85,总表中不管最后一行序号是多少,也跟着是85了,不想要这样结果。
也就是个表中在序号列手工输入序号,总表中序号列序号自动为最后一个序号+1
不知道我描述清楚没有?

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


加好友 发短信
等级:幼狐 帖子:98 积分:737 威望:0 精华:0 注册:2020/3/10 15:14:00
  发帖心情 Post By:2020/3/12 11:37:00 [显示全部帖子]

问题解决,如下:

1、在个表中建立窗口控件,代码如下:

Dim r1 As Row = Tables("道义").AddNew()
Dim r2 As Row = Tables("各水厂").AddNew()
r1("序号") = e.Form.Controls("TextBox1").Value
r1("车牌号") = e.Form.Controls("TextBox2").Value
r1("司机") = e.Form.Controls("TextBox3").Value
r1("日期") = e.Form.Controls("TextBox4").Value
r1("时间") = e.Form.Controls("TextBox5").Value
r1("车身重量") = e.Form.Controls("TextBox6").Value
r1("车皮重量") = e.Form.Controls("TextBox7").Value
r1("货物重量") = e.Form.Controls("TextBox8").Value
r1("地点") = e.Form.Controls("TextBox9").Value
r1("备注") = e.Form.Controls("TextBox10").Value
r2("车牌号") = e.Form.Controls("TextBox2").Value
r2("司机") = e.Form.Controls("TextBox3").Value
r2("日期") = e.Form.Controls("TextBox4").Value
r2("时间") = e.Form.Controls("TextBox5").Value
r2("车身重量") = e.Form.Controls("TextBox6").Value
r2("车皮重量") = e.Form.Controls("TextBox7").Value
r2("货物重量") = e.Form.Controls("TextBox8").Value
r2("地点") = e.Form.Controls("TextBox9").Value
r2("备注") = e.Form.Controls("TextBox10").Value

2、在总表中,选中表属性,在DataRowAdded事件中输入以下代码:

Dim idx As Integer = Tables("各水厂").FindRow(e.DataRow)
If idx > -1 Then
    e.DataRow("序号") = idx + 1
End If

在此感谢:
1、fagg在2011年5月18日发表的主题为“如何制作:在A表增加一行时,那么B表中自动增加一行?”的帖子(链接地址:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=10010);
2、czgtiger在2015年6月4日发表的主题为“[求助]子表如何自动增加序号”(链接地址:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=69418);
3、狐狸爸爸、大红袍;
4、有点蓝版主。



实例如下:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


[此贴子已经被作者于2020/3/12 11:38:01编辑过]

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


加好友 发短信
等级:幼狐 帖子:98 积分:737 威望:0 精华:0 注册:2020/3/10 15:14:00
  发帖心情 Post By:2020/3/12 13:47:00 [显示全部帖子]

感谢有点蓝版主,把你的代码加入我的代码中,也可实现我想要的效果。


谢谢~~~

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


加好友 发短信
等级:幼狐 帖子:98 积分:737 威望:0 精华:0 注册:2020/3/10 15:14:00
  发帖心情 Post By:2020/3/12 16:42:00 [显示全部帖子]

现在我把地点变为可以选择项,想实现点选哪个地点就眺到哪个地点所属的表中进行数据录入(如下图)。

不知道如何进行编写代码?


图片点击可在新窗口打开查看此主题相关图片如下:地点选择.jpg
图片点击可在新窗口打开查看

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.table



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