以文本方式查看主题

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

--  作者:yifan3429
--  发布时间:2012/6/15 18:09:00
--  自动编号问题

 

Select e.DataCol.Name
    Case
"制单日期","工程代码"
        If
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
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
bh As String = e.DataRow("工程代码") & "-" & Format(d,"yyyyMM") & "-" \'生成编号的前缀
            If
e.DataRow("单据编号").StartsWith(bh) = False \'如果单据编号前缀不符
                Dim
max As String
                Dim
idx As Integer
                Dim
flt As String
               
flt = "工程代码 = \'"& e.DataRow("工程代码") & "\' And 制单日期 >= #" & fd & "# And 制单日期 <= #" & ld & "#"
               
max = e.DataTable.Compute("Max(单据编号)",flt) \'取得该月的相同工程代码的最大单据编号
                If
max > "" Then \'如果存在最大单据编号
                   
idx = CInt(max.Substring(12,4)) + 1 \'获得最大单据编号的后四位顺序号,并加1
                Else

                    idx
= 1
\'否则顺序号等于1
                End If

                e
.DataRow("单据编号") = bh & Format(idx,"0000"
)
            End If
        End If
End Select

 

 

这里面控制了“工程代码”的字符数量为  4  我想变成2个就会显示上面的错误提示 

求助  修改那一句是来控制  字符数量的   或是  如何编写 字符才不受字符控制  。

 

[此贴子已经被作者于2012-6-15 18:09:44编辑过]

--  作者:ksyh518
--  发布时间:2012/6/15 18:45:00
--  自动编号问题

呵呵

idx = CInt(max.Substring(12,4)) + 1

这句中的12这个数字(工程代码-日期-)

注:1、工程代码4位;2、两个“-”为两个字符;  3、日期又是6位;

 


--  作者:yifan3429
--  发布时间:2012/6/15 21:41:00
--  

谢谢楼上的解答

我将类别 设置到3位  4位 都可以

就是2位不行 

继续求解,


图片点击可在新窗口打开查看此主题相关图片如下:360桌面截图20120615213840.jpg
图片点击可在新窗口打开查看
前缀不会连接上去  还会出现上面的错误提示。

[此贴子已经被作者于2012-6-15 21:42:45编辑过]

--  作者:狐狸爸爸
--  发布时间:2012/6/16 9:49:00
--  
设计好表,输入几行数据,然后传上来,其他人才能帮你测试