Foxtable(狐表)用户栏目专家坐堂 → 多层嵌套查找计算


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

主题:多层嵌套查找计算

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


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
多层嵌套查找计算  发帖心情 Post By: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

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


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2016/5/14 21:37:00 [显示全部帖子]

还有没有其他更好的办法了?

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


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2016/8/3 23:22: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("截止日期")
e.DataRow("合同金额") = dr("合同金额")
e.DataRow("发货金额") = dr("发货金额")
        Else
            Dim dr1 As DataRow = DataTables("合同明细").find("合同编号 = '" & dr("合同编号") & "'")
            If dr IsNot Nothing Then
                If dr1.Isnull("新合同编号") = True Then
                    e.DataRow("截止日期") = dr1("截止日期")
e.DataRow("合同金额") = dr1("合同金额")
e.DataRow("发货金额") = dr1("发货金额")
                Else
                    Dim dr2 As DataRow = DataTables("合同明细").find("合同编号 = '" & dr1("合同编号") & "'")
                    If dr2 IsNot Nothing Then
                        If dr2.Isnull("新合同编号") = True Then
                            e.DataRow("截止日期") = dr2("截止日期")
e.DataRow("合同金额") = dr2("合同金额")
e.DataRow("发货金额") = dr2("发货金额")
                        Else
                            Dim dr3 As DataRow = DataTables("合同明细").find("合同编号 = '" & dr2("合同编号") & "'")
                            If dr3 IsNot Nothing Then
                                If dr.Isnull("新合同编号") = True Then
                                    e.DataRow("截止日期") = dr3("截止日期")
e.DataRow("合同金额") = dr3("合同金额")
e.DataRow("发货金额") = dr3("发货金额")
                                End If
                            End If
                        End If
                    End If
                End If
            End If
        End If
    End If
End If

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


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2016/8/3 23:23:00 [显示全部帖子]

需要返回多个参数

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


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2016/8/4 11:56:00 [显示全部帖子]

多个递归函数吗?代码就是6楼的


 回到顶部