Foxtable(狐表)用户栏目专家坐堂 → 请教各位专家,谁能帮我看看我对这段代码的理解哪里错了?


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

主题:请教各位专家,谁能帮我看看我对这段代码的理解哪里错了?

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


加好友 发短信
等级:婴狐 帖子:60 积分:459 威望:0 精华:0 注册:2011/9/21 11:04:00
请教各位专家,谁能帮我看看我对这段代码的理解哪里错了?  发帖心情 Post By:2011/9/29 9:58:00 [只看该作者]

Select Case e.DataCol.name Case "合同编号" Dim pr As DataRow = e.DataRow.GetParentRow("合同信息汇总表") Dim dr As DataRow = e.DataRow.GetParentRow("营销类合同") If pr IsNot Nothing And CurrentTable.name = "付款明细表" e.DataRow("合同名称") = pr("合同名称") End If If dr IsNot Nothing And CurrentTable.name = "付款明细表" e.DataRow("合同名称") = dr("合同名称") End If End Select 我的理解是:当发生变化的列是合同变化时,则pr返回合同信息汇总表的关联行,dr返回营销类合同中的关联行。如果pr返回非空值时,则合同名称列返回父表“合同信息汇总表”中关联行的合同名称的值。如果dr返回非空值时,则合同名称列返回父表“营销类合同”中关联行的合同名称的值。 我在执行上述代码时会弹出错误,求解~~~感谢各位专家、

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


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

没有看出有什么问题,只是代码中为什么会出现CurrentTable?


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


加好友 发短信
等级:婴狐 帖子:60 积分:459 威望:0 精华:0 注册:2011/9/21 11:04:00
回复:(狐狸爸爸)没有看出有什么问题,只是代码中为...  发帖心情 Post By:2011/9/29 10:09:00 [只看该作者]

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

请狐爸帮我看看表“付款明细表”中的DATACHANGED事件的代码,现在的问题是出在第三种情况,当我输入合同编号时,不能根据输入的值直接从前面两张父表的关联行中引用相应的值。请教狐爸指点问题是出在什么地方?

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


加好友 发短信
等级:三尾狐 帖子:719 积分:5181 威望:0 精华:1 注册:2008/9/24 10:41:00
  发帖心情 Post By:2011/9/29 10:11:00 [只看该作者]

这个是一个儿子二个父亲呢,不懂.这种表间关系也可以吗?
[此贴子已经被作者于2011-9-29 10:12:53编辑过]

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


加好友 发短信
等级:三尾狐 帖子:719 积分:5181 威望:0 精华:1 注册:2008/9/24 10:41:00
  发帖心情 Post By:2011/9/29 10:18:00 [只看该作者]

比如A.B   C.B    在A表下新增行关联数据是A表的,C表的关联肯定不会自动加入的吧.

理应提取C表的关联才对吧.少个提取.


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


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

下面这样的代码没有错的,如果没有出结果,只有两个原因:

1、父表没有对应的行

2、父表有对应的行,但是此行的合同名称列无数据。

 

  Case "合同编号"
        Dim pr As DataRow = e.DataRow.GetParentRow("合同信息汇总表")
        Dim dr As DataRow = e.DataRow.GetParentRow("营销类合同")
        If pr IsNot Nothing Then
          e.DataRow("合同名称") =  pr("合同名称")
        End If
        If dr IsNot Nothing  Then
          e.DataRow("合同名称") =  dr("合同名称")
        End If

 

实际上,你两个父表的合同名称列就是没有数据的。

另外这样的代码,设置在付款明细表的DataColChanged事件,触发事件的就是付款明细表,有必要判断表名吗,即使判断表名也不是CurrentTable.name,而是e.DataTable.Name,CurrentTable表示当前选定的表,和触发事件的表是两回事。


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


加好友 发短信
等级:三尾狐 帖子:719 积分:5181 威望:0 精华:1 注册:2008/9/24 10:41:00
  发帖心情 Post By:2011/9/29 10:34:00 [只看该作者]

哈,以为合同编号是自动提取的.理解错误

 回到顶部