以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  如何对编号规则的进一步修改  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=51323)

--  作者:jimmyhwang
--  发布时间:2014/5/24 12:09:00
--  如何对编号规则的进一步修改
这个是早期做的规则。。。

Select e.DataCol.Name \'自动生成子编码
    Case  "编号"
        If e.DataRow.IsNull("编号") Then
            e.DataRow("子编号") = Nothing
        Else
            Dim bh As  String = e.DataRow("编号")
            If e.DataRow("子编号").StartsWith(bh) = False  \'如果子编号前缀不符
                Dim max  As  String
                Dim idx  As  Integer
                max = e.DataTable.Compute("Max(子编号)","编号 = \'" & bh  & "\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号
                If max > ""  Then  \'如果存在最大编号
                    Dim l As Integer = bh.Length
                    idx = CInt(max.Substring(l,3)) + 1  \'获得最大编号的后两位顺序号,并加1
                Else
                    idx = 1  \'否则顺序号等于1
                End  If
                e.DataRow("子编号") = bh & Format(idx,"000")
            End If
        End  If

现在想修改为,如果编号只有一个的情况下,从数据库下载,子编号跟编号一样。后面就不要添加001了。mysql数据库,请问如何写语句~ 

好像我说明的不够。。我再次说明一下。
编号是会重复出现的。我现在要从mysql数据库下载订单产品信息。之前做的这个代码在datacolchanged里。这个代码让所有下载下来的订单产品信息,子编号后面都添加了001,002,003.... 现在我想要的是当编号只有一个的时候,子编号后面不添加001。
这样就需要一个判断数据库里的订单表里的编号是否为多个。请问如何写代码?

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20140525111523.jpg
图片点击可在新窗口打开查看


[此贴子已经被作者于2014-5-25 11:23:19编辑过]

--  作者:Bin
--  发布时间:2014/5/24 14:44:00
--  
如果编号只有一个的情况下,从数据库下载 没懂你意思.
--  作者:zyqzyy
--  发布时间:2014/5/24 14:47:00
--  

不太明白,楼主是不是想取数据库的编号吗?


--  作者:jimmyhwang
--  发布时间:2014/5/25 11:29:00
--  
都是要从数据库下载的。编号有一个或者多个的。我之前的代码在datacolchanged里,让所有下载下来的编号生成的对应的子编号后面都添加了001,002,003...现在我想让只有一个编号的情况,后面不添加001了。。所以要做一个判断。
--  作者:jimmyhwang
--  发布时间:2014/5/25 11:31:00
--  
编号会重复的。都是从数据库下载。当编号不重复,只有一个的时候,子编号就=编号。所以要现在数据库做个判断编号是否多个或者一个。
--  作者:有点甜
--  发布时间:2014/5/25 11:41:00
--  
Select e.DataCol.Name \'自动生成子编码
    Case  "编号"
        If e.DataRow.IsNull("编号") Then
            e.DataRow("子编号") = Nothing
        Else
            Dim bh As  String = e.DataRow("编号")
            If e.DataRow("子编号").StartsWith(bh) = False  \'如果子编号前缀不符
                Dim max  As  String
                Dim idx  As  Integer
                Dim count As Integer = e.DataTable.Compute("Count(_Identify)","编号 = \'" & bh  & "\' And [_Identify] <> " & e.DataRow("_Identify")) 
                If count > 1 Then
                   
                    max = e.DataTable.Compute("Max(子编号)","编号 = \'" & bh  & "\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号
                    If max > ""  Then  \'如果存在最大编号
                        Dim l As Integer = bh.Length
                        idx = CInt(max.Substring(l,3)) + 1  \'获得最大编号的后两位顺序号,并加1
                    Else
                        idx = 1  \'否则顺序号等于1
                    End  If
                    e.DataRow("子编号") = bh & Format(idx,"000")
                End If
            End  If
        End If

--  作者:jimmyhwang
--  发布时间:2014/5/25 14:52:00
--  
子编号出不来了~ 
--  作者:有点甜
--  发布时间:2014/5/25 14:54:00
--  
Select e.DataCol.Name \'自动生成子编码
    Case  "编号"
        If e.DataRow.IsNull("编号") Then
            e.DataRow("子编号") = Nothing
        Else
            Dim bh As  String = e.DataRow("编号")
            If e.DataRow("子编号").StartsWith(bh) = False  \'如果子编号前缀不符
                Dim max  As  String
                Dim idx  As  Integer
                Dim count As Integer = e.DataTable.Compute("Count(_Identify)","编号 = \'" & bh  & "\' And [_Identify] <> " & e.DataRow("_Identify")) 
                If count > 0 Then
                   
                    max = e.DataTable.Compute("Max(子编号)","编号 = \'" & bh  & "\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号
                    If max > ""  Then  \'如果存在最大编号
                        Dim l As Integer = bh.Length
                        idx = CInt(max.Substring(l,3)) + 1  \'获得最大编号的后两位顺序号,并加1
                    Else
                        idx = 1  \'否则顺序号等于1
                    End  If
                    e.DataRow("子编号") = bh & Format(idx,"000")
                End If
            End  If
        End If

--  作者:jimmyhwang
--  发布时间:2014/5/25 15:04:00
--  
下载按钮当时让狐爸帮我做了这样的修改,不知道有没有影响。
For Each dr As DataRow In dt.DataRows
    If DataTables("小包发货单").Find("编号 = \'" & dr("OrderNumber") & "\' And ID =\'" & dr("ID") & "\'") Is Nothing Then
        If dr("Status") = 2 Then
            Dim nr As DataRow = DataTables("小包发货单").AddNew()
            nr("日期") =d1.AddSeconds(dr("AddTime"))
            For i As Integer =0 To sCols.Length -1
                nr(dCols(i)) = dr(sCols(i))
            Next
        End If
    End If
Next

刚的代码还是不行,部分出子编号出来,部分没有。 我还是看不懂有点甜老师帮我修改的代码的意思。不然我自己也能找出原因来。先让我学习一下。

--  作者:jimmyhwang
--  发布时间:2014/5/25 15:12:00
--  
我觉得判断应该是在mysql数据库,不应该在datatable。。如果没有把编号全部下载到datatable,根本无法在datatable做个正确的判断。
[此贴子已经被作者于2014-5-25 15:13:21编辑过]