以文本方式查看主题

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

--  作者:朱女士
--  发布时间:2024/8/7 13:30:00
--  自动编号问题
老师您好!
  我有一个表ddpsb,要改变编号规则,就是当年年份后两位+行号,可是我改变后,每次操作增加行时,系统自动关闭退出。不知道如何处理。谢谢指教!
原来的格式:20240728-005

我后来改成这样的格式:24-行号~
现在的代码:
Dim dl As Date = Date.Today
Dim y As Integer = dl.Year

Dim bh As String = Format(dl, "yy") 
    e.DataRow("zzh") = bh & "-" & e.DataRow("_Identify")
    e.DataRow.save

--  作者:有点蓝
--  发布时间:2024/8/7 13:36:00
--  
代码在什么事件?
--  作者:朱女士
--  发布时间:2024/8/7 13:41:00
--  
datacolchanged
--  作者:有点蓝
--  发布时间:2024/8/7 13:47:00
--  
http://www.foxtable.com/webhelp/topics/1522.htm
--  作者:朱女士
--  发布时间:2024/8/7 14:05:00
--  
老师我把代码改了一下,还是不执行,一旦输入数据,就自动关闭系统了。您再帮我看一下,谢谢!

Dim dl As Date = Date.Today
Dim y As Integer = dl.Year
\'Dim dr As DataRow = e.DataRow
If e.DataCol.Name = "zzh" Then
Dim bh As String = Format(dl, "yy") 
   e.DataRow("zzh") = bh & "-" & e.DataRow("_Identify")
    
    e.DataRow.save
End If

--  作者:y2287958
--  发布时间:2024/8/7 14:22:00
--  
死循环了,要判断列名的
--  作者:朱女士
--  发布时间:2024/8/7 15:03:00
--  
老师还是上面的问题,还是不执行语句,我想再换个思路,还是不行,压根就不执行。
原来格式:20240728-005
现在换成:24*****
麻烦老师帮我看看为什么不执行。谢谢!
【datacolchanged】代码:
Dim dt As Date = Date.Today
Dim y As Integer = dt.Year
Dim dr1 As DataRow = e.DataRow 
If e.DataCol.Name = "接单日期" Then
    If e.DataRow.IsNull("接单日期") Then
        e.DataRow("zzh") = Nothing
    Else
        Dim bh As String = Format(dt, "yy")
        If e.DataRow("zzh").StartsWith(bh) = False Then\'如果编号的前8位不符
            Dim max As String
            Dim idx As Integer
        要求: 新增记录, 要求获得本年度的最大编号加1,或获得最大行号加1
            max = e.DataTable.sqlCompute("Max(zzh)", "[_Identify] <> " & e.DataRow("_Identify")) 
             Dim s As String = Trim(max.replace("-", ""))
            If s > "" Then \'如果存在最大编号  
                idx = CInt(s.Substring(2, 5)) + 1 
                idx = 1 \'否则顺序号等于1
            End If
            dr1("zzh") = bh & idx
            e.DataRow.save
        End If 
    End If
End if

--  作者:有点蓝
--  发布时间:2024/8/7 15:11:00
--  
代码放到datarowadded事件

Dim dl As Date = Date.Today
Dim bh As String = Format(dl, "yy") 
    e.DataRow.save
    e.DataRow("zzh") = bh & "-" & e.DataRow("_Identify")


--  作者:朱女士
--  发布时间:2024/8/7 15:11:00
--  
列名也判断了,怎么还不执行?
--  作者:朱女士
--  发布时间:2024/8/7 15:30:00
--  
放到datarowadded事件中
Dim dl As Date = Date.Today
Dim bh As String = Format(dl, "yy") 
    e.DataRow.save
    e.DataRow("zzh") = bh & "-" & e.DataRow("_Identify")
增加新行,zzh还是空白没有填充。