以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何实现自动递增,排序?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=194750)

--  作者:lin98
--  发布时间:2025/1/10 14:11:00
--  如何实现自动递增,排序?
分组 分类名 分类ID
一组 下单 G-01
一组 分类 G-02
一组 检查 G-03
二组 下单 G-01
二组 分类 G-02
二组 检查 G-03
三组 分类 G-01
三组 检查 G-02

如何实现上面表A的分类ID自动填充,排序?
当“分组,分类名”录入后,分类ID按顺序,自动递增,生成,并按顺序显示

--  作者:有点蓝
--  发布时间:2025/1/10 14:13:00
--  
参考:http://www.foxtable.com/webhelp/topics/2403.htm
--  作者:y2287958
--  发布时间:2025/1/10 14:17:00
--  
这是那跟那,三组与一二组的规则不同,咋编?
--  作者:lin98
--  发布时间:2025/1/10 15:08:00
--  


Select e.DataCol.Name
    Case "分组", "分类名"
        If e.DataRow.IsNull("分组") OrElse e.DataRow.IsNull("分类名") Then
            e.DataRow("分类ID") = Nothing
        Else
            Dim d As String = e.DataRow("分组")
            Dim bh As String = "G" & "-" \'生成编号的前缀
            If e.DataRow("分类ID").StartsWith(bh) = False Then\'如果单据编号前缀不符
                Dim max As String
                Dim idx As Integer
                Dim flt As String
                flt = "分组 = \'" & d & "\' = \'" & e.DataRow("分类名") & "\' And [_Identify] <> " & e.DataRow("_Identify")
                max = e.DataTable.Compute("Max(分类ID)", flt) \'取得该月的相同工程代码的最大单据编号
                If max > "" Then \'如果存在最大单据编号
                    idx = CInt(max.Substring(12, 4)) + 1 \'获得最大单据编号的后四位顺序号,并加1
                Else
                    idx = 1 \'否则顺序号等于1
                End If
                e.DataRow("分类ID") = bh & Format(idx, "0000")
            End If
        End If
End Select

\'执行后,无法实现1楼,报错提示:无法在 System.Boolean 和 System.String 上执行“=”操作。


--  作者:有点蓝
--  发布时间:2025/1/10 15:16:00
--  
下面帮助,每个先看3遍




然后学会调试

Select e.DataCol.Name
    Case "分组", "分类名"
        If e.DataRow.IsNull("分组") OrElse e.DataRow.IsNull("分类名") Then
            e.DataRow("分类ID") = Nothing
        Else
            Dim d As String = e.DataRow("分组")
            Dim bh As String = "G" & "-" \'生成编号的前缀
            If e.DataRow("分类ID").StartsWith(bh) = False Then\'如果单据编号前缀不符
                Dim max As String
                Dim idx As Integer
                Dim flt As String
                flt = "分组 = \'" & d & "\' = \'" & e.DataRow("分类名") & "\' And [_Identify] <> " & e.DataRow("_Identify")
                MsgBox(flt)
                max = e.DataTable.Compute("Max(分类ID)", flt) \'取得该月的相同工程代码的最大单据编号
                If max > "" Then \'如果存在最大单据编号
                    MsgBox(max)
                    idx = CInt(max.Substring(12, 4)) + 1 \'获得最大单据编号的后四位顺序号,并加1
                Else
                    idx = 1 \'否则顺序号等于1
                End If
                MsgBox(bh & Format(idx, "0000"))
                e.DataRow("分类ID") = bh & Format(idx, "0000")
            End If
        End If
End Select