以文本方式查看主题

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

--  作者:蓝蚂蚁
--  发布时间:2019/5/29 20:08:00
--  编号问题
表A结构及数据如下:

单号                    公司名称               公司代号        
2019-001             上海**公司             QT
2019-002             上海**公司              QT  
2019-001             深圳**公司             PI
2019-002             深圳**公司             PI


说明:一、单号可以重复,相同公司,其单号顺序增加。
         二、如:首次录入“上海**公司”   单号就生成:2019-001【生成的规律为:今年中,首次录入一个公司则单号为:2019-001,即录入的年份加上“-000”,,同年第二次录入则为:2019-002;如果明年(2020)第一次录入则为:2020-001,以此类推】;

DataColChanged:

If e.DataCol.Name = "公司名称" Then 
    Dim bh As String = Format(Date.Today(), "yyyy")
    Dim max As String
    Dim idx As Integer
    max =e.DataTable.Compute("Max(单号)","公司名称 = #" & e.DataRow("公司名称") & "#") \'取得该天的最大编号
    If max > "" Then \'如果存在最大编号
        idx = CInt(max.Substring(5,3)) + 1 \'获得最大编号的后三位顺序号,并加1
    Else
        idx = 1 \'否则顺序号等于1
    End If
    e.DataRow("单号") = bh & "-" & Format(idx,"000")
End If
这个代码提示错误,不知道正确代码如何写?

--  作者:有点甜
--  发布时间:2019/5/29 21:04:00
--  

max =e.DataTable.Compute("Max(单号)","公司名称 = #" & e.DataRow("公司名称") & "#") \'取得该天的最大编号

 

改成

 

max =e.DataTable.Compute("Max(单号)","公司名称 = \'" & e.DataRow("公司名称") & "\'") \'取得该天的最大编号


--  作者:蓝蚂蚁
--  发布时间:2019/5/30 7:41:00
--  

有点甜老师   按照你的提示   修改之后  达不到我的要求

体现为:某公司在今年(2019)最后一张单号为:2019-556,明年(2020)的第一张(同一个公司)会变成2020-557,我的思路是,明年该公司的第一张单号为:2020-001,

[此贴子已经被作者于2019/5/30 7:45:38编辑过]

--  作者:有点甜
--  发布时间:2019/5/30 9:34:00
--  

 

max =e.DataTable.Compute("Max(单号)","公司名称 = \'" & e.DataRow("公司名称") & "\' and 单号 like \'" & bh & "%\'") \'取得该天的最大编号