以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教各位专家,谁能帮我看看我对这段代码的理解哪里错了?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=13130)

--  作者:kevin11
--  发布时间: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返回非空值时,则合同名称列返回父表“营销类合同”中关联行的合同名称的值。 我在执行上述代码时会弹出错误,求解~~~感谢各位专家、
--  作者:狐狸爸爸
--  发布时间:2011/9/29 10:03:00
--  

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


--  作者:kevin11
--  发布时间:2011/9/29 10:09:00
--  回复:(狐狸爸爸)没有看出有什么问题,只是代码中为...
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目.table

请狐爸帮我看看表“付款明细表”中的DATACHANGED事件的代码,现在的问题是出在第三种情况,当我输入合同编号时,不能根据输入的值直接从前面两张父表的关联行中引用相应的值。请教狐爸指点问题是出在什么地方?
--  作者:狐哥
--  发布时间:2011/9/29 10:11:00
--  
这个是一个儿子二个父亲呢,不懂.这种表间关系也可以吗?
[此贴子已经被作者于2011-9-29 10:12:53编辑过]

--  作者:狐哥
--  发布时间:2011/9/29 10:18:00
--  

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

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


--  作者:狐狸爸爸
--  发布时间: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表示当前选定的表,和触发事件的表是两回事。


--  作者:狐哥
--  发布时间:2011/9/29 10:34:00
--  
哈,以为合同编号是自动提取的.理解错误