Foxtable(狐表)用户栏目专家坐堂 → 模拟关联如何实现同步引用数据?


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

主题:模拟关联如何实现同步引用数据?

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


加好友 发短信
等级:小狐 帖子:307 积分:2252 威望:0 精华:0 注册:2013/2/28 9:05:00
模拟关联如何实现同步引用数据?  发帖心情 Post By:2014/10/30 9:50:00 [只看该作者]

有表a、b、c 三个表,a是主表。a和b,a和c通过做了模拟关联,具体是表a的 [_Identify] 和表b,表c的 “任务ID”关联,为了今后效率考虑仅作模拟关联。

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

 

 

现在想实现,在窗口中,随着表a的数据行变化,同步调用显示表b、c相同“任务ID”的数据。而且,由于与表a [_Identify] 关联的表有10多个,如何提高调用效率?

 


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

 

想来简单,但本人完全小白,高手勿见怪。

 

 

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

[此贴子已经被作者于2014-10-30 10:08:49编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/10/30 9:52:00 [只看该作者]

在表的CUrrentChanged事件 为窗口控件赋值即可

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


加好友 发短信
等级:小狐 帖子:307 积分:2252 威望:0 精华:0 注册:2013/2/28 9:05:00
  发帖心情 Post By:2014/10/30 9:57:00 [只看该作者]

道理我懂,但不会搞代码,而且窗口非常多,3百多个,分别来自十多个明细表,咋整?

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


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

 明细表的意义是,主表一行数据,对应子表的多行数据啊。

 

 显示子表数据的时候,应该是显示一个具体表格啊

 

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

 


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


加好友 发短信
等级:小狐 帖子:307 积分:2252 威望:0 精华:0 注册:2013/2/28 9:05:00
  发帖心情 Post By:2014/10/30 10:12:00 [只看该作者]

老师批评的对,概念不清,这个不是明细表。修改了问题表述。

 

其实,就是想实现在窗口中 ,当前行变化的话,自动find出 表bcdef 中 与“任务ID”=当前行[_Identify]  的数据,并显示,就是这个意思。

 

这个显示还不方便用table控件来模拟关联表,否则就会抄帮助那个案例了

 

窗口控件太多,像下面的代码,岂不是写死人?

 

If Tables("表A").Current IsNot Nothing Then
    e.Form.Controls("TextBox1").text=Tables("表A").Current("第一列")
    e.Form.Controls("ComboBox2").text=Tables("表A").Current("第二列")
    e.Form.Controls("ComboBox1").text=Tables("表A").Current("第三列")
    If Tables("表A").Current.Isnull("第四列")=False Then
        e.Form.Controls("DateTimePicker1").Value=Tables("表A").Current("第四列")
    End If
End If

[此贴子已经被作者于2014-10-30 10:15:04编辑过]

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


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

1、控件绑定到表列;

 

2、用findrow定位各表的行http://www.foxtable.com/help/topics/0553.htm

 

3、用数组+循环去查找定位


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


加好友 发短信
等级:小狐 帖子:307 积分:2252 威望:0 精华:0 注册:2013/2/28 9:05:00
  发帖心情 Post By:2014/10/30 10:58:00 [只看该作者]

老大,我这不是小白么,不会写代码,呵呵,不好意思脸皮厚

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


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


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


加好友 发短信
等级:小狐 帖子:307 积分:2252 威望:0 精华:0 注册:2013/2/28 9:05:00
  发帖心情 Post By:2014/11/7 13:26:00 [只看该作者]

Dim xj As WinForm.TextBox = e.Form.Controls("TextBox1")
Dim dr As DataRow
dr = DataTables("表b").Find("[任务ID] = 'xj'", "日期 Desc")
If dr IsNot Nothing Then
    Dim wz As Integer = Tables("表b").FindRow(dr)
    If wz >= 0 Then
        Tables("表b").Position = wz
    End If
End If

 

 

上述代码,有错误  ,提示“无法在 System.Int32 和 System.String 上执行“=”操作。

应该是这样有错,请指教!

 

dr = DataTables("表b").Find("[任务ID] = 'xj'", "日期 Desc")


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


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

Dim xj As WinForm.TextBox = e.Form.Controls("TextBox1")
Dim dr As DataRow
dr = DataTables("表b").Find("[任务ID] = '" & xj & "'", "日期 Desc")
If dr IsNot Nothing Then
    Dim wz As Integer = Tables("表b").FindRow(dr)
    If wz >= 0 Then
        Tables("表b").Position = wz
    End If
End If

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