Foxtable(狐表)用户栏目专家坐堂 → [求助]关于关联后父表新数据,子表更新不及时的问题


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

主题:[求助]关于关联后父表新数据,子表更新不及时的问题

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


加好友 发短信
等级:婴狐 帖子:53 积分:415 威望:0 精华:0 注册:2014/3/29 23:05:00
[求助]关于关联后父表新数据,子表更新不及时的问题  发帖心情 Post By:2015/3/8 1:30:00 [只看该作者]

1. 情况描述

建立两个内部数据表,设置了表关联,当在子表列属性中启用“数据字典”功能,从父表中取对应的值,会出现:

当父表中新增行数据时,子表中下拉菜单看不到父表新增的行数据(此列已与父表关联),只能看到并选择父表该列旧的数据。必须关闭foxtable以后重新打开,才能看到父表中新增行内容。

2. 测试

无论表关联里是否勾选“同步更新关联列内容”,
无论建立窗口表控件,还是在表里本身操作,
无论如何在表间切换,
都会出现此问题。

请问这个如何破解?要通过代码实现吗?还是我哪里没搞对?


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/3/8 9:30:00 [只看该作者]

数据字典只会在项目启动的时候才生成一次的。

 

如果想实时生成,参考例子

 

http://www.foxtable.com/help/topics/2653.htm

 


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


加好友 发短信
等级:婴狐 帖子:53 积分:415 威望:0 精华:0 注册:2014/3/29 23:05:00
  发帖心情 Post By:2015/3/8 13:28:00 [只看该作者]

谢谢版主,我还想问的更细一点,我的实际工况是:

建立了一个模式窗口,把新增的数据都通过模式窗口中各项文本框和combobox框输入,然后复制对应的值去到数据表里各列,数据表在窗口中是禁止直接编辑的。例图如下:


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

在窗口按钮“新增”的click代码中,以“项目场地”为例,我的思路是通过跨表引用,先看输入或选取在combobox里的项目场地是否在“场地信息”数据表中已存在的,
case 1, 如果在,则在“项目信息”表中addnew,直接把“场地信息”里该行的关联编号赋值到“项目信息”表的新增行中
case 2, 如果是新的项目场地,在“场地信息”表里没有记录过的,则先在“场地信息”表里addnew,把该值赋值到此表中,通过代码自动生成独立的关联编号,然后再把此“场地信息”表里该新增行的关联编号赋值到“项目信息”表的addnew新行里。

问题来了,在预览操作时,出现case2的情况时,“场地信息”表能得到正确赋值与计算出关联编号,在“项目信息”表里也能新增行,但不能得到该新增项目场地的赋值,部分代码如下,请帮忙看一下问题出在哪?

 Dim r As Row = Tables("项目信息").addnew
 Dim dr1 As DataRow = DataTables("场地信息").Find("[场地名称] = '" & xmcd.value & "'")    {说明,xmcd为项目场地combobox里的值}
    If dr1 IsNot Nothing Then       {说明:如果找到了同名的产品行,也就是dr不是Nothing}
        r("项目场地编号") = dr1("场地关联编号")
    Else
        Dim dr1x As Row = Tables("场地信息").AddNew
        dr1x("场地名称") = xmcd.value
        r("项目场地编号") = dr1x("场地关联编号")
    End If

说明:“场地信息”表与“项目信息”表在“场地名称”这一列本身是父子关联的,并通过列属性里的数据字典取值“场地关联编号”(整数型)这一列的值,显示“场地名称”(字符型)列的内容。

是不是问题出在列属性数据表字典里?该怎么解决呢?

谢谢!!

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/3/8 14:24:00 [只看该作者]

 请看2楼的帮助文档啊。

 

 你新增行以后,要重新生成一次数据字典


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


加好友 发短信
等级:婴狐 帖子:53 积分:415 威望:0 精华:0 注册:2014/3/29 23:05:00
  发帖心情 Post By:2015/3/8 15:10:00 [只看该作者]

好的,我再试试,大致有点感觉了。


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


加好友 发短信
等级:婴狐 帖子:53 积分:415 威望:0 精华:0 注册:2014/3/29 23:05:00
  发帖心情 Post By:2015/3/8 22:41:00 [只看该作者]

谢谢版主,已经用上了,我的问题已解决,不过又出来一个新的小问题:

每次操作完以后,必须要切换一下maintable,才能显示值出来,因为用的是“maintablechanged”项目时间,有什么办法能实时显示吗?只要代码一执行,不用切换maintable,直接能显示。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/3/8 22:43:00 [只看该作者]

 拷贝 maintablechanged 的代码,写到 Datacolchanged 事件去,或者写到 prepareEdit 事件中去

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


加好友 发短信
等级:婴狐 帖子:53 积分:415 威望:0 精华:0 注册:2014/3/29 23:05:00
  发帖心情 Post By:2015/3/8 22:46:00 [只看该作者]

太快了回复。。。那这样不用这个了吧?

If MainTable.Name = "项目信息" Then

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/3/8 22:47:00 [只看该作者]

 嗯是的。

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


加好友 发短信
等级:婴狐 帖子:53 积分:415 威望:0 精华:0 注册:2014/3/29 23:05:00
  发帖心情 Post By:2015/3/8 22:51:00 [只看该作者]

版主,我试过了,还是不行。

不管用在全局表事件里的prepareedit还是datacolchanged,都不能实时显示,而且重启foxtable以后,数据表里的动态数据字典已经不在了

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