以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  还是编号问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=152793)

--  作者:朱女士
--  发布时间: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
谢谢!

--  作者:朱女士
--  发布时间:2020/7/22 14:40:00
--  
编号列不是整齐的,还有这样的:wd-ABB-20191228-0978
--  作者:有点蓝
--  发布时间: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

--  作者:朱女士
--  发布时间:2020/7/22 15:17:00
--  
执行出错:好像是这句? max = e.DataTable.SQLCompute("Max(Right(编号,4))"),错误信息:调用的目标发生了异常。从字符串“REF!”到类型“Integer”的转换无效。
输入字符串的格式不正确。


--  作者:有点蓝
--  发布时间:2020/7/22 15:20:00
--  
                 max = e.DataTable.SQLCompute("Max(Right(编号,4))")

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

--  作者:朱女士
--  发布时间:2020/7/22 15:40:00
--  
老师实在不好意思,这个问题太麻烦您了,又出错了:从字符串“REF!”到类型“Integer”的转换无效。
输入字符串的格式不正确。

--  作者:有点蓝
--  发布时间:2020/7/22 15:49:00
--  
请上传实例说明
--  作者:朱女士
--  发布时间: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,作为新行的编号后四位。

--  作者:朱女士
--  发布时间:2020/7/22 15:59:00
--  
这里如果我要今天输入魏德曼的数据,应该新行编号自动:为wd-魏德曼-20200722-0475
--  作者:朱女士
--  发布时间:2020/7/22 15:59:00
--  
老师麻烦了这个问题困扰我一天了。