Foxtable(狐表)用户栏目专家坐堂 → [求助]编号不能自动生成,不知道错在哪里?


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

主题:[求助]编号不能自动生成,不知道错在哪里?

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


加好友 发短信
等级:一尾狐 帖子:402 积分:4984 威望:0 精华:0 注册:2015/4/30 15:42:00
[求助]编号不能自动生成,不知道错在哪里?  发帖心情 Post By:2016/4/7 17:02:00 [只看该作者]

编号不能自动生成,不知道错在哪里?代码如下

Select e.DataCol.Name
    Case "项目编号","合同类型"
        If e.DataRow.IsNull("项目编号") OrElse e.DataRow.IsNull("合同类型") Then
            e.DataRow("合同编号") = Nothing
        Else
            Dim s As String = e.DataRow("合同编号")
            If e.DataRow("合同类型") = "劳务合同" Then
                s = "LW"
            ElseIf e.DataRow("合同类型") = "采购合同" Then
                s = "CG"
            ElseIf e.DataRow("合同类型") = "租赁合同" Then
                s = " ZL "
            ElseIf e.DataRow("合同类型") = "其他合同" Then
                s = " QT "
            ElseIf e.DataRow("合同类型") = "分包合同" Then
                s = " FB "
            Else
            End If
            Dim bh As String = e.DataRow("项目编号") & s  '生成合同编号的前缀
            If e.DataRow("合同编号").StartsWith(bh) = False '如果合同编号前缀不符
                Dim max As String
                Dim idx As Integer
                Dim flt As String
                flt = "项目编号 = '"& e.DataRow("项目编号") & bh & "' And [_Identify] <> " & e.DataRow("_Identify")
                max = e.DataTable.Compute("Max(合同编号)",flt) '取得该类别的最大编号
                If max > "" Then '如果存在最大编号
                    idx = CInt(max.Substring(9,3)) + 1 '获得最大编号的后三位顺序号,并加1
                Else
                    idx = 1 '否则顺序号等于1
                End If
                e.DataRow("合同编号") = bh & Format(idx,"000")
            End If
        End If
End Select


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/4/7 17:05:00 [只看该作者]

           Dim bh As String = e.DataRow("项目编号") & s  '生成合同编号的前缀
            If e.DataRow("合同编号").StartsWith(bh) = False '如果合同编号前缀不符
                Dim max As String
                Dim idx As Integer
                Dim flt As String
                flt = "合同编号 like '" & bh & "%' And [_Identify] <> " & e.DataRow("_Identify")
                max = e.DataTable.Compute("Max(合同编号)",flt) '取得该类别的最大编号
                If max > "" Then '如果存在最大编号
                    idx = CInt(max.Substring(bh.length,3)) + 1 '获得最大编号的后三位顺序号,并加1
                Else
                    idx = 1 '否则顺序号等于1
                End If
                e.DataRow("合同编号") = bh & Format(idx,"000")
            End If

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


加好友 发短信
等级:一尾狐 帖子:402 积分:4984 威望:0 精华:0 注册:2015/4/30 15:42:00
  发帖心情 Post By:2016/4/7 17:11:00 [只看该作者]

谢谢大红袍老师!

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


加好友 发短信
等级:幼狐 帖子:111 积分:953 威望:0 精华:0 注册:2009/5/29 17:09:00
  发帖心情 Post By:2016/4/7 19:18:00 [只看该作者]

强烈建议做成模块化

 回到顶部