以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教代码互斥的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=83824)

--  作者:douglas738888
--  发布时间:2016/4/18 10:06:00
--  请教代码互斥的问题
请教老师,下面测试例子存在几个问题,

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

问题:

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

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

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

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

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




--  作者:大红袍
--  发布时间: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
--  发布时间:2016/4/18 10:40:00
--  
对不起,我发的例子文件,

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

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

--  作者:大红袍
--  发布时间:2016/4/18 11:06:00
--  
 用了2楼的代码,勾选测试不会报错啊。
--  作者:douglas738888
--  发布时间:2016/4/18 11:35:00
--  
老师,如果勾选已经转换的行是不会报错,如果把策划转换表里的行全部删除重新转换,或者转换新行的时候,点击窗口策划转换里面的转换按钮就开始报错了。
--  作者:大红袍
--  发布时间: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