以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 编号问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=86887) |
|
-- 作者:jamhuton -- 发布时间:2016/6/28 12:43:00 -- 编号问题 If e.DataCol.Name = "订舱日期" Then If e.DataRow.IsNull("订舱日期") Then e.DataRow("订舱编号") = Nothing Else Dim bh As String = Format(e.DataRow("订舱日期"),"yyyyMMdd") \'取得订舱编号的8位前缀 If e.DataRow("订舱编号").StartsWith(bh) = False \'如果订舱编号的前8位不符 Dim max As String Dim idx As Integer max = e.DataTable.Compute("Max(订舱编号)","订舱日期 = #" & e.DataRow("订舱日期") & "# And [_Identify] <> " & e.DataRow("_Identify")) \'取得该天的最大订舱编号 If max > "" Then \'如果存在最大订舱编号 idx = CInt(max.Substring(9,3)) + 1 \'获得最大订舱编号的后三位顺订舱编号,并加1 idx = 1 \'否则顺订舱编号等于1 End If e.DataRow("订舱编号") = bh & "-内贸" & Format(idx,"000") End If End If End If
|
|
-- 作者:jamhuton -- 发布时间:2016/6/28 12:44:00 --
|
|
-- 作者:yinyb36 -- 发布时间:2016/6/28 13:04:00 --
|
|
-- 作者:jamhuton -- 发布时间:2016/6/28 13:26:00 -- 貌似也不对,关键我要想把红色【内贸】加进去,所以才出现问题的。 |
|
-- 作者:douglas738888 -- 发布时间:2016/6/28 13:52:00 -- 设置代码列,列的内容就是“内贸” 采用这种格式会好些 Select e.DataCol.Name Case "代码"..... 给你个参考 这段代码编出来的是例如:P16001-110001Z-DQ201-01 Select e.DataCol.Name Case "系统编号_工程专业","系统编号_年份日期","设计编号_电压等级","设计编号_设计阶段","图纸编号_专业类别","图纸编号_顺序编号" If e.DataRow.IsNull("系统编号_工程专业") OrElse e.DataRow.IsNull("系统编号_年份日期") OrElse e.DataRow.IsNull("设计编号_电压等级") OrElse e.DataRow.IsNull("设计编号_设计阶段") OrElse e.DataRow.IsNull("图纸编号_专业类别") OrElse e.DataRow.IsNull("图纸编号_顺序编号") Then e.DataRow("图签图号") = Nothing Else Dim d As Date = e.DataRow("系统编号_年份日期") d = new Date(d.Year, 1,1) Dim max As Integer Dim flt As String flt = "系统编号_工程专业 = \'"& e.DataRow("系统编号_工程专业") & "\' And 系统编号_年份日期 >= #" & d & "# and 系统编号_年份日期 < #" & d.AddYears(1) & "# And [_Identify] <> " & e.DataRow("_Identify") max = e.DataTable.Compute("Max(系统编号_顺序编号)",flt) \'取得该月的相同工程代码的最大单据编号 e.DataRow("系统编号_顺序编号") = max + 1 flt = "系统编号_工程专业 = \'"& e.DataRow("系统编号_工程专业") & "\' And 设计编号_电压等级 = \'" & e.DataRow("设计编号_电压等级") & "\' And 系统编号_年份日期 >= #" & d & "# and 系统编号_年份日期 < #" & d.AddYears(1) & "# And [_Identify] <> " & e.DataRow("_Identify") max = e.DataTable.Compute("Max(设计编号_工程编号)",flt) \'取得该月的相同工程代码的最大单据编号 e.DataRow("设计编号_工程编号") = max + 1 flt = "系统编号_工程专业 = \'"& e.DataRow("系统编号_工程专业") & "\' and 图纸编号_专业类别 = \'" & e.DataRow("图纸编号_专业类别") & "\' and 设计编号_电压等级 = \'" & e.DataRow("设计编号_电压等级") & "\' And 系统编号_年份日期 >= #" & d & "# and 系统编号_年份日期 < #" & d.AddYears(1) & "# And [_Identify] <> " & e.DataRow("_Identify") max = e.DataTable.Compute("Max(设计编号_工程编号)",flt) \'取得该月的相同工程代码的最大单据编号 \'e.DataRow("分册顺序号") = max + 1 e.DataRow("图签图号") = e.DataRow("系统编号_工程专业") & format(d, "yy") & format(e.DataRow("系统编号_顺序编号"), "000-") & e.DataRow("设计编号_电压等级") & format(e.DataRow("设计编号_工程编号"), "000") & e.DataRow("设计编号_设计阶段") & "-" & e.DataRow("图纸编号_专业类别") & Format(e.DataRow("图纸编号_分册编号"), "00-") & Format(e.DataRow("图纸编号_顺序编号"),"00") End If End Select |
|
-- 作者:大红袍 -- 发布时间:2016/6/28 14:43:00 -- If e.DataCol.Name = "订舱日期" Then idx = 1 \'否则顺订舱编号等于1 |
|
-- 作者:jamhuton -- 发布时间:2016/6/28 15:25:00 -- 感觉这个代码是没有问题,可能是其他代码引起这个生成的编号出现问题,整列都变成最后一次生成的编号 |
|
-- 作者:大红袍 -- 发布时间:2016/6/28 15:30:00 -- 上传foxtable实例说明问题。 |