以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求编号的自动生成代码  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=10246)

--  作者:zdk0915
--  发布时间:2011/5/26 22:04:00
--  求编号的自动生成代码
求助:要求编号格式:冠头字母&年的后二位&月的二位&新增行序001、002、003、.....,要求在新增行时编号列能自动生成编号,并在隔月时后面的新增行序能从001重新开始。代码该如何写?请版主或高手们指点,谢谢!
--  作者:狐狸爸爸
--  发布时间:2011/5/26 22:49:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目16.table


--  作者:明丰
--  发布时间:2011/6/5 17:16:00
--  

日期也加进去,请问如何设置?

如:2011-06-05   希望编号为:

    AA11 06 05 001

[此贴子已经被作者于2011-6-5 19:14:44编辑过]

--  作者:e-png
--  发布时间:2011/6/5 20:24:00
--  
以下是引用明丰在2011-6-5 17:16:00的发言:

日期也加进去,请问如何设置?

如:2011-06-05   希望编号为:

    AA11 06 05 001

[此贴子已经被作者于2011-6-5 19:14:44编辑过]

Dim bh As String = "AA" & Format(d,"yyMM") 改为:Dim bh As String = "AA" & Format(d,"yyMMdd")


--  作者:明丰
--  发布时间:2011/6/5 21:28:00
--  
出错,请测试.
--  作者:e-png
--  发布时间:2011/6/5 21:48:00
--  

 这不符合要求吗?


图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看


贴出你出错的代码来呀。

[此贴子已经被作者于2011-6-5 22:24:19编辑过]

--  作者:明丰
--  发布时间:2011/6/6 7:32:00
--  
以下是引用e-png在2011-6-5 21:48:00的发言:

 这不符合要求吗?


图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看


贴出你出错的代码来呀。

[此贴子已经被作者于2011-6-5 22:24:19编辑过]

上表中第一行:日期是2011-05-02,编号是AA110505001 ,编号应该为AA110502001

        第二行:日期是2011-05-19,编号是AA110505003,编号应该为AA110519001

出现的问题:同一月份增加多“日”,如2011-05-02;2011-05-19

                                  编号部分的“月、日”都显示为0519

原因在于设置时是以同一月份进行顺序编号,日期增加"日"时,前面同月不同日的编号都被改为相同的刚输入的月日编号。

 


--  作者:mr725
--  发布时间:2011/6/6 10:47:00
--  

估计6楼的老弟用了当前行的日期了,这样改一下:

 

If e.DataCol.Name = "日期" Then
If e.DataRow.IsNull("日期") Then
    e.DataRow("编号") = Nothing
Else
    Dim rq As Date = e.DataRow("日期")
    Dim y As Integer = rq.Year
    Dim m As Integer = rq.Month
    Dim Days As Integer = Date.DaysInMonth(y,m)
    Dim fd As Date = New Date(y,m,1)
    Dim ld As Date = New Date(y,m,Days)
    Dim n As Integer
    Dim drs As List(of DataRow) = e.DataTable.Select("日期 >= #" & fd & "# And 日期 <= #" & ld & "#")
    For Each dr As DataRow In drs  \'i As Integer = 0 To drs.Count - 1
        Dim rq1 As Date = dr("日期")
        dr("编号")  = "AA" & right(rq1.year,2) & format(rq1.month,"00") & format(rq1.day,"00") & format(n+1,"000")
        n = n + 1
    Next
End If
End If


--  作者:实话实说
--  发布时间:2011/6/6 11:50:00
--  

8楼的代码试了一下,有点问题:删除一行后,再增加一行,所有记录将重新按序编号.

 


--  作者:mr725
--  发布时间:2011/6/6 12:29:00
--  
以下是引用实话实说在2011-6-6 11:50:00的发言:

8楼的代码试了一下,有点问题:删除一行后,再增加一行,所有记录将重新按序编号.

 

是这样的,有何不妥吗?

如果你想已有的编号不变,可以另加限制条件的。