以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  一个遍历问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=86875)

--  作者:douglas738888
--  发布时间:2016/6/28 10:35:00
--  一个遍历问题
请教老师,下面这段代码,要实现同一个  任务索引  号下全部行的  审定完成  逻辑列为TRUE后, 投标商务副表  的   完成 列才为TRUE

我想应该是用遍历,但不知怎样来写

Dim pr As DataRow    \'"投标商务待审_Table8 "对应的任务索引号的逻辑列全部勾选, 投标商务副表的审批完成,完成列才勾选视为完成审批
Dim cr As Row = Tables("投标商务待审_Table8").current
Dim c1 As Integer = cr.Table.Compute("count(任务索引)", "任务索引 = \'" & cr("任务索引") & "\'")
Dim c2 As Integer = cr.Table.Compute("count(任务索引)", "任务索引 = \'" & cr("任务索引") & "\' and 审定完成 = true")
pr = DataTables("投标商务副表").find("任务索引 = \'" & cr("任务索引") & "\'")
If pr IsNot Nothing Then
    pr("审批完成") = (c1 = c2)
End If

--  作者:大红袍
--  发布时间:2016/6/28 10:38:00
--  
 这个代码本身就没有问题。
--  作者:douglas738888
--  发布时间:2016/6/28 11:02:00
--  
老师,昨天您指导的代码,我加了条件,形成审核条件后,因为只加载是符合待审核条件的行,同一个索引任务号下其他待审的行不出现的情况下,只勾选符合待审条件的行,上表逻辑列就打钩了

Dim Filter As String = "审批人员 Like  \'%" & _UserName & "%\' and (审定确认 not Like \'%" & _UserName & "%\' or 审定确认 Is null) and 审批流程 Like \'%编制程序_编制%\'"  \'待审条件

Tables("投标商务待审_Table8").Filter = "_Identify in (-1," & Tables("投标商务待审_Table8").DataTable.GetComboListString("_Identify", filter).replace("|", ",") & ")"


是否要修改这段代码
If e.DataCol.Name = "审定完成" Then \'窗口投标策划,"投标商务副表时间审批"副本Table8勾选后,投标商务副表对应列打钩(出现多值,多值行勾选后,对应SQL投标商务副表才勾选对应逻辑列
    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
                If e.DataRow("审定完成") = False
                    fdr(str & "完成") = False
                Else
                    Dim c11 As Integer = e.DataTable.compute("count(任务索引)", "任务索引 = \'" & e.DataRow("任务索引") & "\' and 审批流程 = \'" & e.DataRow("审批流程") & "\'")
                    Dim c22 As Integer = e.DataTable.compute("count(任务索引)", "任务索引 = \'" & e.DataRow("任务索引") & "\' and 审定完成 = true  and 审批流程 = \'" & e.DataRow("审批流程") & "\'")                                  
                 fdr(str & "完成") = (c11 = c22)
                End If
            End If
       End If
    End If
End If
[此贴子已经被作者于2016/6/28 11:16:06编辑过]

--  作者:大红袍
--  发布时间:2016/6/28 11:15:00
--  

那代码就改一下

 

Dim pr As DataRow    \'"投标商务待审_Table8 "对应的任务索引号的逻辑列全部勾选, 投标商务副表的审批完成,完成列才勾选视为完成审批
Dim cr As Row = Tables("投标商务待审_Table8").current
Dim c1 As Integer = cr.Table.datatable.Compute("count(任务索引)", "任务索引 = \'" & cr("任务索引") & "\'")
Dim c2 As Integer = cr.Table.datatable.Compute("count(任务索引)", "任务索引 = \'" & cr("任务索引") & "\' and 审定完成 = true")

pr = DataTables("投标商务副表").find("任务索引 = \'" & cr("任务索引") & "\'")
If pr IsNot Nothing Then
    pr("审批完成") = (c1 = c2)
End If