Foxtable(狐表)用户栏目专家坐堂 → 请教代码互斥的问题


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

主题:请教代码互斥的问题

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


加好友 发短信
等级:五尾狐 帖子:1172 积分:8772 威望:0 精华:0 注册:2012/4/18 16:28:00
请教代码互斥的问题  发帖心情 Post By:2016/4/18 10:06:00 [只看该作者]

请教老师,下面测试例子存在几个问题,

变电副表(主表)与策划转换(子表)建立了关联

问题:

1. 策划转换表勾选逻辑列“审核完成”,变电副表对应的逻辑列进行勾选没有问题,但是,在策划转换表的DataColChanged代码与窗口“策划转换”的转换按钮代码会

形成互斥,当点击水平转换垂直按钮时,报错在策划转换表的DataColChanged。

2. 想实现,在窗口“策划转换”由水平表转换为垂直表的时候,如果策划转换表已转换某行后,再按转换按钮时,索引号一样的行将不进行转换(避免重复)增加行,对此我

    设置了避免重复值的代码,但是最后一次转换的行在窗口显示时总是多一行显示。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试bb.zip




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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/4/18 10:33:00 [只看该作者]

1、如何测试会报错啊?我测试没问题。

 

2、代码

 

Dim cs() As String = {"设计程序_设计","校对程序_校对","审核程序_审核","批准程序_批准"}
Dim r As Row = Tables("变电副表").Current
For Each c As String In cs
    If r.IsNull(c) = False Then
        Dim i As Integer '以下代码功能,当产生第一次转换后,再转换时重复值删除
        Dim nr As Row
        Dim idx As Integer = Tables("变电副表.策划转换").FindRow("审批流程='" & c & "'")
        If idx >= 0 Then
            nr = Tables("变电副表.策划转换").rows(idx)
        Else
            nr = Tables("变电副表.策划转换").addnew
        End If
        nr("审批流程") = c
        nr("审批人员") = r(c)
    End If
Next


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


加好友 发短信
等级:五尾狐 帖子:1172 积分:8772 威望:0 精华:0 注册:2012/4/18 16:28:00
  发帖心情 Post By:2016/4/18 10:40:00 [只看该作者]

对不起,我发的例子文件,

因为代码互斥,在策划转换表的DataColChanged勾选逻辑列代码没有启动,需要消除每行代码前的 '. 当这些代码启动后,打开窗口策划转换,点击水平转换垂直按钮就报错了,

调用目标........

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/4/18 11:06:00 [只看该作者]

 用了2楼的代码,勾选测试不会报错啊。

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


加好友 发短信
等级:五尾狐 帖子:1172 积分:8772 威望:0 精华:0 注册:2012/4/18 16:28:00
  发帖心情 Post By:2016/4/18 11:35:00 [只看该作者]

老师,如果勾选已经转换的行是不会报错,如果把策划转换表里的行全部删除重新转换,或者转换新行的时候,点击窗口策划转换里面的转换按钮就开始报错了。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/4/18 11:42:00 [只看该作者]

If e.DataCol.Name = "审核完成" Then
    Dim fdr As DataRow = DataTables("变电副表").find("索引号 = '" & e.DataRow("索引号") & "'")
    If fdr IsNot Nothing Then
        Dim str As String = e.DataRow("审批流程")
        If str.length >= 2 Then
            str = str.SubString(0,str.length -2)
            If fdr.DataTable.DataCols.Contains(str & "完成") Then
                fdr(str & "完成") = e.DataRow("审核完成")
            End If
        End If
    End If
End If

 回到顶部