以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 多层嵌套查找计算 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=84982) |
|
-- 作者:kaituozhe -- 发布时间:2016/5/14 16:02:00 -- 多层嵌套查找计算 一个合同可能多次续签,续签后在此合同的新合同编号列写上新合同的编号,两个表,分别合同明细、合同合并,合同合并表中截止日期是续签后最后一份合同的截止日期,以下的代码是逐层查找并计算,如果续签次数超过10次、甚至以上代码就会很长,有无改进办法? If e.DataCol.name = "合同编号" Then Dim dr As DataRow = DataTables("合同明细").find("合同编号 = \'" & e.DataRow("合同编号") & "\'") If dr IsNot Nothing Then If dr.Isnull("新合同编号") = True Then e.DataRow("截止日期") = dr("截止日期") Else Dim dr1 As DataRow = DataTables("合同明细").find("合同编号 = \'" & dr("合同编号") & "\'") If dr IsNot Nothing Then If dr1.Isnull("新合同编号") = True Then e.DataRow("截止日期") = dr1("截止日期") Else Dim dr2 As DataRow = DataTables("合同明细").find("合同编号 = \'" & dr1("合同编号") & "\'") If dr2 IsNot Nothing Then If dr2.Isnull("新合同编号") = True Then e.DataRow("截止日期") = dr2("截止日期") Else Dim dr3 As DataRow = DataTables("合同明细").find("合同编号 = \'" & dr2("合同编号") & "\'") If dr3 IsNot Nothing Then If dr.Isnull("新合同编号") = True Then e.DataRow("截止日期") = dr3("截止日期") End If End If End If End If End If End If End If End If End If
|
|
-- 作者:Hyphen -- 发布时间:2016/5/14 16:26:00 -- 建议增加一个冗余字段 如果合同明细之上还有主合同,那么就在主合同增加一个字段,记录最后的合同编号 也可以在合同明细增加一个字段,记录第一份合同的编号
|
|
-- 作者:kaituozhe -- 发布时间:2016/5/14 21:37:00 -- 还有没有其他更好的办法了? |
|
-- 作者:Hyphen -- 发布时间:2016/5/15 13:56:00 -- 递归 定义递归函数名称GetDate,函数体 Dim dt As DataTable = Args(0) Dim 合同编号 As String = Args(1) Dim dr As DataRow = dt.find("合同编号 = \'" & 合同编号 & "\'") If dr IsNot Nothing Then If dr.Isnull("新合同编号") Then Return dr("截止日期") Else Return Functions.Execute("GetDate",dt,dr("新合同编号") ) End If Else Return Nothing End If 调用事件改为 If e.DataCol.name = "合同编号" Then Dim d = Functions.Execute("GetDate",DataTables("合同明细"),e.DataRow("合同编号")) If d IsNot Nothing Then e.DataRow("截止日期") = d End If |
|
-- 作者:kaituozhe -- 发布时间:2016/8/3 23:22:00 -- |
|
-- 作者:kaituozhe -- 发布时间:2016/8/3 23:23:00 -- 需要返回多个参数 |
|
-- 作者:Hyphen -- 发布时间:2016/8/4 8:30:00 -- 参考4楼,用递归。不会就上传例子 |
|
-- 作者:kaituozhe -- 发布时间:2016/8/4 11:56:00 -- 多个递归函数吗?代码就是6楼的 |
|
-- 作者:大红袍 -- 发布时间:2016/8/4 12:56:00 -- 上传实例说明,你要做什么吧。 |