以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 多值转换问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=84363) |
-- 作者:douglas738888 -- 发布时间:2016/4/29 9:45:00 -- 多值转换问题 请教老师,下列代码会遇到多值字段的审核,应该怎样调整,比如: 校对 老马,老张 审核 老刘,老王 批准 老吴 校对 老马 校对 老张 审核 老刘 审核 老王 批准 老吴 Dim cs() As String = {"设计","校对","审核","批准"} Dim r As Row = Tables("工作策划操作_Table3").Current \'SQL工作策划副表 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 & "\'") Dim st() As String = cs(c).Split(",") If idx >= 0 Then nr = Tables("工作策划副表审核").rows(idx) Else nr = Tables("工作策划副表审核").addnew End If nr("审批流程") = c nr("审批人员") = r(c) End If Next [此贴子已经被作者于2016/4/29 9:45:48编辑过]
|
-- 作者:大红袍 -- 发布时间:2016/4/29 9:49:00 --
[此贴子已经被作者于2016/4/29 9:49:39编辑过]
|
-- 作者:大红袍 -- 发布时间:2016/4/29 9:51:00 -- Dim cs() As String = {"设计","校对","审核","批准"} Dim r As Row = Tables("工作策划操作_Table3").Current \'SQL工作策划副表 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 Dim st() As String = r(c).Split(",") For Each s As String In st nr("审批流程") = c nr("审批人员") = s Next End If Next |
-- 作者:douglas738888 -- 发布时间:2016/4/29 10:31:00 -- 老师,还没有转过了,转换时候,只转换多值字段的其中一个,做了例子,请帮忙再看看 |
-- 作者:大红袍 -- 发布时间:2016/4/29 10:35:00 -- Dim cs() As String = {"设计","校对","审核","批准"} |
-- 作者:douglas738888 -- 发布时间:2016/4/29 10:38:00 -- 谢谢老师,是要把.....ADDNEW换到下面才行,我刚才也试了,谢谢 |
-- 作者:douglas738888 -- 发布时间:2016/4/29 11:55:00 -- 又得麻烦老师了,引用上面例子,下面代码在运行时,如果多值字段形成的了审核行后,审核的时候,勾选多值行其中一个,所对应的逻辑列就打钩了,希望是多值的审核行打钩后,上表对应的逻辑列才打钩,是再遍历一次,还是COUNT行,不是很清楚了。 校对 老马,老张 口 审核 老刘,老王 口 批准 老吴 口 校对 老马 口 校对 老张 口 审核 老刘 审核 老王 批准 老吴 If e.DataCol.Name = "审批完成" Then \'窗口工作策划操作,SQL工作策划副表审核勾选后,SQL工作策划副表对应列打钩 Dim fdr As DataRow = DataTables("工作策划操作_Table3").find("任务索引 = \'" & e.DataRow("任务索引") & "\'") \'模拟主表,SQL工作策划副表 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 |
-- 作者:大红袍 -- 发布时间:2016/4/29 12:03:00 -- If e.DataCol.Name = "审批完成" Then \'窗口工作策划操作,SQL工作策划副表审核勾选后,SQL工作策划副表对应列打钩 Dim fdr As DataRow = DataTables("工作策划操作_Table3").find("任务索引 = \'" & e.DataRow("任务索引") & "\'") \'模拟主表,SQL工作策划副表 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 c1 As Integer = e.DataTable.compute("count(任务索引)", "任务索引 = \'" & e.DataRow("任务索引") & "\'") Dim c2 As Integer = e.DataTable.compute("count(任务索引)", "任务索引 = \'" & e.DataRow("任务索引") & "\' and 审批完成 = true") fdr(str & "完成") = (c1 = c2) End If End If End If End If End If |
-- 作者:douglas738888 -- 发布时间:2016/4/29 12:47:00 -- 请教老师,最后这段指导的代码,是全部行勾选后的控制,我想实现的是“表E审批”多值行勾选后,“表E”有多值字段的逻辑列才勾选,其他如果没有多值字段的逻辑列,对应勾选 我又上个例子,请老师指导指导 |
-- 作者:大红袍 -- 发布时间:2016/4/29 14:35:00 -- If e.DataCol.Name = "审批完成" Then Dim fdr As DataRow = DataTables("表E").find("编号 = \'" & e.DataRow("编号") & "\'") \'模拟主表,SQL工作策划副表 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 c1 As Integer = e.DataTable.compute("count(编号)", "编号 = \'" & e.DataRow("编号") & "\' and 审批流程 = \'" & e.DataRow("审批流程") & "\'") Dim c2 As Integer = e.DataTable.compute("count(编号)", "编号 = \'" & e.DataRow("编号") & "\' and 审批完成 = true and 审批流程 = \'" & e.DataRow("审批流程") & "\'") fdr(str & "完成") = (c1 = c2) End If End If End If End If End If |