Foxtable(狐表)用户栏目专家坐堂 → 还是编号问题


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

主题:还是编号问题

美女呀,离线,留言给我吧!
朱女士
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:453 积分:3683 威望:0 精华:0 注册:2020/2/8 11:14:00
还是编号问题  发帖心情 Post By:2020/7/22 14:39:00 [只看该作者]

老师您好!
    我有一个表的编号列格式是这样的:其中两行内容:wd-魏德曼-20200709-0474和wd-魏德曼-20200707-0463,我想在增加行时,取这列中所有编号的后四位中的最大值加1,做为新行的编号后四位。我写的代码是这样的,但不执行。Select e.DataCol.Name
    Case "接单日期","客户"
        If e.DataRow.IsNull("接单日期") OrElse e.DataRow.IsNull("客户") Then
            e.DataRow("编号") = Nothing
        Else
            Dim d As Date = e.DataRow("接单日期")
            Dim y As Integer = d.Year
            Dim m As Integer = d.Month
         
            Dim bh As String = "wd-" & e.DataRow("客户") & "-" & Format(d,"yyyyMMdd") & "-" '生成编号的前缀
            If e.DataRow("编号").StartsWith(bh) = False '如果单据编号前缀不符
                Dim max As String
                Dim idx As Integer
                Dim flt As String
                 max = e.DataTable.Compute(Max.substring(e.DataRow("编号").length-3,4))

                If max > "" Then 
                  idx=cint(max)+1
              
                Else
                    idx = 1 
                End If
                e.DataRow("编号") = bh & Format(idx,"0000")
            End If
        End If
End Select
谢谢!

 回到顶部
美女呀,离线,留言给我吧!
朱女士
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:453 积分:3683 威望:0 精华:0 注册:2020/2/8 11:14:00
  发帖心情 Post By:2020/7/22 14:40:00 [只看该作者]

编号列不是整齐的,还有这样的:wd-ABB-20191228-0978

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107811 积分:548406 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/22 14:44:00 [只看该作者]

            Dim bh As String = "wd-" & e.DataRow("客户") & "-" & Format(d,"yyyyMMdd") & "-" '生成编号的前缀
            If e.DataRow("编号").StartsWith(bh) = False '如果单据编号前缀不符
                Dim max As String
                Dim idx As Integer
                Dim flt As String
                 max = e.DataTable.SQLCompute("Max(Right(编号,4))")

                If max > "" Then 
                  idx=cint(max)+1
              
                Else
                    idx = 1 
                End If
                e.DataRow("编号") = bh & Format(idx,"0000")
e.DataRow.save
            End If

 回到顶部
美女呀,离线,留言给我吧!
朱女士
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:453 积分:3683 威望:0 精华:0 注册:2020/2/8 11:14:00
  发帖心情 Post By:2020/7/22 15:17:00 [只看该作者]

执行出错:好像是这句? max = e.DataTable.SQLCompute("Max(Right(编号,4))"),错误信息:调用的目标发生了异常。从字符串“REF!”到类型“Integer”的转换无效。
输入字符串的格式不正确。


 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107811 积分:548406 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/22 15:20:00 [只看该作者]

                 max = e.DataTable.SQLCompute("Max(Right(编号,4))")

                If max > "" Then 
                  idx=cint(max.substring(max.length - 4))+1

 回到顶部
美女呀,离线,留言给我吧!
朱女士
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:453 积分:3683 威望:0 精华:0 注册:2020/2/8 11:14:00
  发帖心情 Post By:2020/7/22 15:40:00 [只看该作者]

老师实在不好意思,这个问题太麻烦您了,又出错了:从字符串“REF!”到类型“Integer”的转换无效。
输入字符串的格式不正确。

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107811 积分:548406 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/22 15:49:00 [只看该作者]

请上传实例说明

 回到顶部
美女呀,离线,留言给我吧!
朱女士
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:453 积分:3683 威望:0 精华:0 注册:2020/2/8 11:14:00
  发帖心情 Post By:2020/7/22 15:57:00 [只看该作者]

wd-魏德曼-20200709-0474
wd-魏德曼-20200709-0474
wd-魏德曼-20200709-0474
wd-魏德曼-20200709-0474
wd-魏德曼-20200709-0474
wd-魏德曼-20200709-0474
wd-魏德曼-20200709-0474
wd-魏德曼-20200709-0474
wd-魏德曼-20200709-0474
wd-魏德曼-20200421-0209


这是编号列的部分内容,我要取后四位最大值加1,作为新行的编号后四位。

 回到顶部
美女呀,离线,留言给我吧!
朱女士
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:453 积分:3683 威望:0 精华:0 注册:2020/2/8 11:14:00
  发帖心情 Post By:2020/7/22 15:59:00 [只看该作者]

这里如果我要今天输入魏德曼的数据,应该新行编号自动:为wd-魏德曼-20200722-0475

 回到顶部
美女呀,离线,留言给我吧!
朱女士
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:453 积分:3683 威望:0 精华:0 注册:2020/2/8 11:14:00
  发帖心情 Post By:2020/7/22 15:59:00 [只看该作者]

老师麻烦了这个问题困扰我一天了。

 回到顶部
总数 14 1 2 下一页