以文本方式查看主题

-  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=120215)

--  作者:outcat
--  发布时间:2018/6/9 23:55:00
--  编号问题


此主题相关图片如下:1.png
按此在新窗口浏览图片


 


此主题相关图片如下:2.png
按此在新窗口浏览图片

If e.DataCol.Name = "二级类别" Then
    If e.NewValue Is Nothing Then
        e.DataRow("二级编号") = Nothing
        e.DataRow("商品编号") = Nothing
    Else
        Dim dr As DataRow
        dr = DataTables("商品二级类别").Find("[二级类别] = \'" & e.NewValue & "\'")
        If dr IsNot Nothing
            e.DataRow("二级类别") = dr("二级类别")
            e.DataRow("二级编号") = dr("二级编号")
            e.DataRow("一级编号") = dr("一级编号")
            Dim lbbh As String = e.DataRow("二级编号")
            Dim yjbh As String = e.DataRow("一级编号")
            If e.DataRow("商品编号").StartsWith(lbbh) = False \'如果单据编号前缀不符
                Dim max As String
                Dim idx As Integer
                max = e.DataTable.Compute("Max(商品编号)","二级编号 = \'" & lbbh & "\'And [_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号

 

                If max > "" Then \'如果存在最大编号


                    idx = CInt(max.Substring(5,4)) + 1 \'获得最大编号的后三位顺序号,并加1
                Else
                    idx = 1 \'否则顺序号等于1
                End If
                e.DataRow("商品编号") = lbbh & Format(idx,"0000")
            End If
           
        End If
    End If
End If

 

老师,我这块编码想再加判断条件,请老师帮助一下,我要实现的是 比如不同的厂家 都有桌子、板凳这两个类别,厂家是一级类别,桌子、板凳是二级类别,明细是三级,当我添加了一个厂家的明细时,再添加另一个厂家相同类别的明细时,商品编号应该是本厂家的商品类别加流水号,可现在却是在上一个厂家相同类别的流水号上递增,我试着写了,一直写不对


--  作者:有点甜
--  发布时间:2018/6/10 22:55:00
--  

比如代码

 

max = e.DataTable.Compute("Max(商品编号)","某列=\'" & e.datarow("某列) & "\' and 二级编号 = \'" & lbbh & "\'And [_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号


--  作者:outcat
--  发布时间:2018/6/11 0:01:00
--  
老师,这样改了不行,编号还是和原来一样,换一个二级类别,取得的编号还是上一个类别的编号
--  作者:有点甜
--  发布时间:2018/6/11 0:10:00
--  
以下是引用outcat在2018/6/11 0:01:00的发言:
老师,这样改了不行,编号还是和原来一样,换一个二级类别,取得的编号还是上一个类别的编号

 

上传具体项目说明你的问题。


--  作者:outcat
--  发布时间:2018/6/11 22:53:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:11.png
图片点击可在新窗口打开查看

图片中,这个商品编号应该显示002050001才对

--  作者:outcat
--  发布时间:2018/6/11 22:53:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:新家园.rar


--  作者:outcat
--  发布时间:2018/6/11 22:57:00
--  
老师,我的窗体在系统维护,商品维护目录下,麻烦给看一下
--  作者:有点蓝
--  发布时间:2018/6/11 23:35:00
--  
If e.DataCol.Name = "二级类别" Then
    If e.NewValue Is Nothing Then
        e.DataRow("二级编号") = Nothing
        e.DataRow("商品编号") = Nothing
    Else
        Dim dr As DataRow
        dr = DataTables("商品二级类别").Find("[二级类别] = \'" & e.NewValue & "\' and 一级类别=\'" & e.DataRow("一级类别") & "\'")

        If dr IsNot Nothing
……