以文本方式查看主题

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

--  作者:Rhonin
--  发布时间:2017/12/13 10:20:00
--  自动编号
老师好,我想把自动编号前缀设为用户分组,代码是这样的
        Dim bh As String = "_UserGroup" & Format(d,"yyyyMM") 
但是并不能正确的把值赋到上面,请问一下老师应该怎么改

--  作者:sjx71
--  发布时间:2017/12/13 10:34:00
--  
改为  Dim bh As String = User.Group & Format(d,"yyyyMM") 试试



--  作者:有点甜
--  发布时间:2017/12/13 10:41:00
--  
Dim bh As String = _UserGroup & Format(d,"yyyyMM") 
--  作者:Rhonin
--  发布时间:2017/12/13 10:43:00
--  
这样的话会提示从字符串“p20”到类型“Integer”的转换无效。
--  作者:Rhonin
--  发布时间:2017/12/13 10:53:00
--  
还是会报这个错误
从字符串“p20”到类型“Integer”的转换无效。

--  作者:有点甜
--  发布时间:2017/12/13 10:57:00
--  
肯定不是上面代码的问题,请正确定位错误,或者贴出完整代码。
--  作者:Rhonin
--  发布时间:2017/12/13 11:04:00
--  
额,在加上这个之前是好用的,把这段删了就是正常工作的
--  作者:Rhonin
--  发布时间:2017/12/13 11:04:00
--  
If e.DataCol.Name =  "日期" Then
    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 = " _UserGroup " & Format(d,"yyyyMM") \'生成编号的前6位,4位年,2位月.
        If e.DataRow("运单号").StartsWith(bh) = False \'如果编号的前6位不符
            Dim  max As String
            Dim  idx As  Integer
            max = e.DataTable.Compute("Max(运单号)","日期 >= #" & fd & "# And 日期 <= #" & ld & "# And [_Identify] <> " & e.DataRow("_Identify")) \'取得该月的最大编号
            If  max > "" Then \'如果存在最大编号
                idx = CInt(max.Substring(bh.length+1,3)) + 1  \'获得最大编号的后三位顺序号,并加1
            Else
                idx = 1 \'否则顺序号等于1
            End  If
            e.DataRow("运单号") = bh & "-" & Format(idx,"000")
        End If
    End  If
End  If

--  作者:Rhonin
--  发布时间:2017/12/13 11:06:00
--  
老师,抱歉,已经好了,我把表里之前的行删掉就能用了..
--  作者:有点甜
--  发布时间:2017/12/13 11:08:00
--  

要说多少次?改成下面那样,去掉双引号。

 

        Dim bh As String = _UserGroup & Format(d,"yyyyMM") \'生成编号的前6位,4位年,2位月.