以文本方式查看主题 - 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。 这样就需要一个判断数据库里的订单表里的编号是否为多个。请问如何写代码? [此贴子已经被作者于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编辑过]
|