Foxtable(狐表)用户栏目专家坐堂 → 利用动态建立的关联,怎样让子表的关联列随主表自动更新呢?


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

主题:利用动态建立的关联,怎样让子表的关联列随主表自动更新呢?

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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
利用动态建立的关联,怎样让子表的关联列随主表自动更新呢?  发帖心情 Post By:2010/6/1 21:25:00 [只看该作者]

如题。

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/6/1 22:10:00 [只看该作者]

Relations没有相关属性,现在应该不行。

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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2010/6/2 6:20:00 [只看该作者]

以下是引用czy在2010-6-1 22:10:00的发言:
Relations没有相关属性,现在应该不行。

   怎样实现类似的功能?

   我想在主表的DatacolChanging事件中进行处理,即当主表的关联列变更时,用代码查找子表中相关联的列,然后进行变更?这种办法有无问题?还有无更好的办法?

 

    另外,既然动态建立的关联关联列不能自动更新,那么我不再动态建立关联了,而是全部改为用代码替代关联的功能(帮助有例子),不知这样有什么问题没有?执行效率哪个更高?


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/6/2 7:49:00 [只看该作者]

GetChildRows

 

返回一个DataRow集合,集合中包括指定子表中和该行对应的全部关联行,语法:

 

GetChildRows(ChildName)

 

ChildName: 子表名称。

 

示例

 

假定产品表和订单表之间通过产品编号建立了关联,下面的代码获得第一个产品的全部订单,并将这些订单的折扣设为0.1:

Dim drs As List(Of Datarow)
drs =
DataTables("产品").DataRows(0).GetChildRows("订单")
For Each
dr As DataRow In drs
    dr(
"折扣") = 0.1

Next


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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2010/6/2 8:34:00 [只看该作者]

以下是引用狐狸爸爸在2010-6-2 7:49:00的发言:

GetChildRows

 

返回一个DataRow集合,集合中包括指定子表中和该行对应的全部关联行,语法:

 

GetChildRows(ChildName)

 

……

注意我这个贴子的问题是:

利用动态建立的关联,怎样让子表的关联列随主表自动更新呢?除了在DatacolChanging事件进行设置,有无更好的办法呢?

[此贴子已经被作者于2010-6-2 8:34:25编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/6/2 8:41:00 [只看该作者]

没有别的办法


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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2010/6/2 8:47:00 [只看该作者]

以下是引用狐狸爸爸在2010-6-2 8:41:00的发言:

没有别的办法

不能在用代码动态建立关联时增加一个参数,来决定是否自动更新吗?


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/6/2 8:56:00 [只看该作者]

这样也很简单的啊:

 

DataColChanging事件
 
 
If e.DataCol.Name = "关联列" Then
    Dim drs As List(Of Datarow)
    drs = e.DataRow.GetChildRows("子表")
    For Each dr As DataRow In drs
        dr("关联列") = e.NewValue
    Next
Next


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57584 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2010/6/3 7:38:00 [只看该作者]

Select Case e.DataCol.Name
    Case "IO","商标
        Dim kh As String = e.DataRow("IO")
        Dim cp As String = e.DataRow("商标")
        Dim tj = "IO = '" & kh & "' And 商标 = '" & cp & "'"
        If kh >"" AndAlso cp> "" Then
            If DataTables("辅料明细").Find(tj) Is Nothing Then
                Dim dr As DataRow = DataTables("辅料明细").AddNew()
                dr("IO") = kh
                dr("商标") = cp
            End If
        End If
End Select

   以前狐爸给我的代码,对你应该有用.


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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2010/6/19 9:34:00 [只看该作者]

建立关联的时候,绝大多数情况下都需要关联列自动更新。

建议贺老师把系统改一下,利用代码动态建立的关联,缺省状态下关联列自动更新。这样更方便!


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