以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- [求助]如果通过其他表列的状态来更改另外一个表行的颜色? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=55278)
|
-- 作者:liujywwy
-- 发布时间:2014/8/13 16:38:00
-- [求助]如果通过其他表列的状态来更改另外一个表行的颜色?
在需求主表,对审核通过打勾,希望在需求明细表的相应的需求编号行颜色更改。
在需求主表,对审核未通过打勾,希望在需求明细表的相应的需求编号行颜色更改。
在临时版本跟踪表,对状态选择Bound or Published or Confirming 。希望在需求明细表的相应的需求编号行颜色做不同更改。
我只知道在同一个表,对某行更改颜色,设置自定义样式,表属性---Drawcell写代码。这个会。
但是跨表更改不会。请帮忙。
|
-- 作者:Bin
-- 发布时间:2014/8/13 16:40:00
--
利用FIND找到对应的行就可以了
但是这么做,效率不高.
|
-- 作者:有点甜
-- 发布时间:2014/8/13 16:44:00
--
楼主,你可以加入一列,把其他表的值写到本表来,这样你就只需要判断本表的数据。
|
-- 作者:liujywwy
-- 发布时间:2014/8/13 17:29:00
--
以下是引用有点甜在2014-8-13 16:44:00的发言: 楼主,你可以加入一列,把其他表的值写到本表来,这样你就只需要判断本表的数据。
Dim r As Row = Tables("需求主表").Current
If e.DataCol.name="审核通过" Then If e.DataRow("审核通过") Then If MessageBox.show("请核实已审核的需求","打勾前请确认",MessageBoxButtons.OKCancel,MessageBoxIcon.Question)=DialogResult.OK Then Dim m As New MailSender m.Host = "mail.bdcom.com.cn" m.Account = "version@bdcom.com.cn" m.Password = "version" m.From = "version@bdcom.com.cn" m.To = r("邮件通知") If r.IsNull("研发邮箱") = False Then m.AddReceiver(r("研发邮箱")) End If If r.IsNull("附加通知人员") = False Then m.AddReceiver(r("附加通知人员")) End If m.Title = "博达软件管理系统= = = = = = =" & "需求编号:" & r("需求编号") & "-----此需求已审核,请研发和测试尽快处理" m.C & r("需求编号") & " 期望交期:" & r("期望交期") m.Send msgbox("需求编号:" & r("需求编号") & "------>" & "此需求已审核通过并mail通知了相关研发测试人员!") Select Case e.DataCol.Name Case "审核通过" Tables("需求主表").Filter = "审核通过 = False And 审核不通过 = False" End Select
If r.DataRow.GetChildRows("需求明细表").Count = 0 Then Dim dr As DataRow = DataTables("需求明细表").AddNew() dr("状态") = r("审核通过") End If
If r.DataRow.GetChildRows("临时版本跟踪表").Count = 0 Then Dim dr As DataRow = DataTables("临时版本跟踪表").AddNew() dr("需求编号") = r("需求编号") End If End If End If End If
这是需求主表datacolchanged代码。
增加的是下面的代码是不是有问题啊。执行完在需求明细表的状态列没有内容。
If r.DataRow.GetChildRows("需求明细表").Count = 0 Then Dim dr As DataRow = DataTables("需求明细表").AddNew() dr("状态") = r("审核通过")
|
-- 作者:有点甜
-- 发布时间:2014/8/13 17:38:00
--
For Each cdr As DataRow In r.DataRow.GetChildRows("需求明细表") cdr("状态") = r("审核通过") End If
|
-- 作者:liujywwy
-- 发布时间:2014/8/14 9:16:00
--
以下是引用有点甜在2014-8-13 17:38:00的发言: For Each cdr As DataRow In r.DataRow.GetChildRows("需求明细表") cdr("状态") = r("审核通过") End If
通过for each遍历,那不就需求明细表所有行的状态列的值都变为了true吗?
应该是只针对需求编号的行改状态。
比如在需求主表,需求编号为20140814,勾选审核通过,然后在需求明细表的需求编号为20140814的行的状态列值变为true。想做为这样效果。
|
-- 作者:Bin
-- 发布时间:2014/8/14 9:19:00
--
不会,你动手试试先
|
-- 作者:liujywwy
-- 发布时间:2014/8/14 10:54:00
--
临时版本跟踪表datacolchange代码如下:
If e.DataCol.name="状态" Then If e.DataRow("状态") = "Published" Then If r.IsNull("临时版本编号") = True OrElse r.isnull("软件环境") = True OrElse r.isnull("show_version") = True Then MessageBox.show("请检查,临时版本编号列,软件环境列,show version列不能为空","提示",MessageBoxButtons.OK,MessageBoxIcon.Question) e.DataRow("状态") = "" Else If MessageBox.show("请确认此需求的状态要变更为已发布?","请确认",MessageBoxButtons.OKCancel,MessageBoxIcon.Question)=DialogResult.OK Then Dim m As New MailSender m.Host = "mail.bdcom.com.cn" m.Account = "version@bdcom.com.cn" m.Password = "version" m.From = "version@bdcom.com.cn" If r.IsNull("邮件通知") = False Then m.AddReceiver(r("邮件通知")) End If If r.IsNull("研发邮箱") = False Then m.AddReceiver(r("研发邮箱")) End If If r.IsNull("技术支持邮箱") = False Then m.AddReceiver(r("技术支持邮箱")) End If m.Title = "博达软件管理系统= = = = = = =" & "需求编号:" & r("需求编号") &"------>临时版本编号:" & r("临时版本编号") & "+" & r("软件环境") & "已发布" m.C & r("需求编号") &"------>临时版本编号:" & r("临时版本编号") & "+" & r("软件环境") & "已发布" m.Send msgbox("临时版本编号:" & r("临时版本编号") & "+" & r("软件环境") & "已发布并mail通知了相关邮件接收者!") For Each cdr As DataRow In r.DataRow.GetChildRows("需求明细表") cdr("状态") = r("状态") Next r.locked = True Else e.DataRow("状态") = "" End If End If End If End If
请看一下红色的代码。3个表,需求明细表,需求主表,临时版本跟踪表。
勾选需求主表的审核通过,需求明细表状态列为true,再次对临时版本跟踪表的状态列选择了Published。按照理论需求明细表状态列的值由之前的true应该更改为Published。
可是没生效。请看看需要怎么改。
|
-- 作者:有点甜
-- 发布时间:2014/8/14 11:24:00
--
If e.DataCol.name="状态" Then If e.DataRow("状态") = "Published" Then If r.IsNull("临时版本编号") = True OrElse r.isnull("软件环境") = True OrElse r.isnull("show_version") = True Then MessageBox.show("请检查,临时版本编号列,软件环境列,show version列不能为空","提示",MessageBoxButtons.OK,MessageBoxIcon.Question) e.DataRow("状态") = "" Else If MessageBox.show("请确认此需求的状态要变更为已发布?","请确认",MessageBoxButtons.OKCancel,MessageBoxIcon.Question)=DialogResult.OK Then Dim m As New MailSender m.Host = "mail.bdcom.com.cn" m.Account = "version@bdcom.com.cn" m.Password = "version" m.From = "version@bdcom.com.cn" If r.IsNull("邮件通知") = False Then m.AddReceiver(r("邮件通知")) End If If r.IsNull("研发邮箱") = False Then m.AddReceiver(r("研发邮箱")) End If If r.IsNull("技术支持邮箱") = False Then m.AddReceiver(r("技术支持邮箱")) End If m.Title = "博达软件管理系统= = = = = = =" & "需求编号:" & r("需求编号") &"------>临时版本编号:" & r("临时版本编号") & "+" & r("软件环境") & "已发布" m.C & r("需求编号") &"------>临时版本编号:" & r("临时版本编号") & "+" & r("软件环境") & "已发布" m.Send msgbox("临时版本编号:" & r("临时版本编号") & "+" & r("软件环境") & "已发布并mail通知了相关邮件接收者!") r.locked = True Else e.DataRow("状态") = "" End If End If End If For Each cdr As DataRow In r.DataRow.GetChildRows("需求明细表") cdr("状态") = r("状态") Next End If
|
-- 作者:liujywwy
-- 发布时间:2014/8/14 12:07:00
--
好像还是不对啊。没生效。
|