Foxtable(狐表)用户栏目专家坐堂 → [求助]如果通过其他表列的状态来更改另外一个表行的颜色?


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

主题:[求助]如果通过其他表列的状态来更改另外一个表行的颜色?

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


加好友 发短信
等级:三尾狐 帖子:633 积分:4034 威望:0 精华:0 注册:2014/6/23 10:27:00
[求助]如果通过其他表列的状态来更改另外一个表行的颜色?  发帖心情 Post By:2014/8/13 16:38:00 [只看该作者]

在需求主表,对审核通过打勾,希望在需求明细表的相应的需求编号行颜色更改。

在需求主表,对审核未通过打勾,希望在需求明细表的相应的需求编号行颜色更改。

在临时版本跟踪表,对状态选择Bound or Published or Confirming 。希望在需求明细表的相应的需求编号行颜色做不同更改。

 

我只知道在同一个表,对某行更改颜色,设置自定义样式,表属性---Drawcell写代码。这个会。

但是跨表更改不会。请帮忙。

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:临时版本跟踪系统26.rar


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


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

利用FIND找到对应的行就可以了

但是这么做,效率不高.

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


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

 楼主,你可以加入一列,把其他表的值写到本表来,这样你就只需要判断本表的数据。

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


加好友 发短信
等级:三尾狐 帖子:633 积分:4034 威望:0 精华:0 注册:2014/6/23 10:27:00
  发帖心情 Post By: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("审核通过")


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


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

For Each cdr As DataRow In r.DataRow.GetChildRows("需求明细表")
    cdr("状态") = r("审核通过")
End If

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


加好友 发短信
等级:三尾狐 帖子:633 积分:4034 威望:0 精华:0 注册:2014/6/23 10:27:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

不会,你动手试试先

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


加好友 发短信
等级:三尾狐 帖子:633 积分:4034 威望:0 精华:0 注册:2014/6/23 10:27:00
  发帖心情 Post By: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。

可是没生效。请看看需要怎么改。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  10楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:633 积分:4034 威望:0 精华:0 注册:2014/6/23 10:27:00
  发帖心情 Post By:2014/8/14 12:07:00 [只看该作者]

好像还是不对啊。没生效。

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