Foxtable(狐表)用户栏目专家坐堂 → 如何对编号规则的进一步修改


  共有3873人关注过本帖树形打印复制链接

主题:如何对编号规则的进一步修改

帅哥哟,离线,有人找我吗?
jimmyhwang
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:178 积分:1228 威望:0 精华:0 注册:2014/1/23 0:48:00
如何对编号规则的进一步修改  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/5/24 14:44:00 [只看该作者]

如果编号只有一个的情况下,从数据库下载 没懂你意思.

 回到顶部
帅哥哟,离线,有人找我吗?
zyqzyy
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:822 积分:5879 威望:0 精华:0 注册:2013/7/29 12:00:00
  发帖心情 Post By:2014/5/24 14:47:00 [只看该作者]

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


 回到顶部
帅哥哟,离线,有人找我吗?
jimmyhwang
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:178 积分:1228 威望:0 精华:0 注册:2014/1/23 0:48:00
  发帖心情 Post By:2014/5/25 11:29:00 [只看该作者]

都是要从数据库下载的。编号有一个或者多个的。我之前的代码在datacolchanged里,让所有下载下来的编号生成的对应的子编号后面都添加了001,002,003...现在我想让只有一个编号的情况,后面不添加001了。。所以要做一个判断。

 回到顶部
帅哥哟,离线,有人找我吗?
jimmyhwang
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:178 积分:1228 威望:0 精华:0 注册:2014/1/23 0:48:00
  发帖心情 Post By:2014/5/25 11:31:00 [只看该作者]

编号会重复的。都是从数据库下载。当编号不重复,只有一个的时候,子编号就=编号。所以要现在数据库做个判断编号是否多个或者一个。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:178 积分:1228 威望:0 精华:0 注册:2014/1/23 0:48:00
  发帖心情 Post By:2014/5/25 14:52:00 [只看该作者]

子编号出不来了~ 

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:178 积分:1228 威望:0 精华:0 注册:2014/1/23 0:48:00
  发帖心情 Post By: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
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:178 积分:1228 威望:0 精华:0 注册:2014/1/23 0:48:00
  发帖心情 Post By:2014/5/25 15:12:00 [只看该作者]

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

 回到顶部
总数 15 1 2 下一页