以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助] 关于再增加行之后不能自动生成代码的问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=107833) |
-- 作者:anderson -- 发布时间:2017/10/11 9:07:00 -- [求助] 关于再增加行之后不能自动生成代码的问题 各位前辈,请教一个问题: 我datarowadding事件里面增加了如下内容,不报错,但是没有实现序号增加的功能。想请教一下。 public leibie as 1 e.DataRow("日期")=Date.Today() e.DataRow("工程代码")= leibie Dim d As Date = e.DataRow("日期") Dim y As Integer = d.Year Dim fd As Date = New Date(y,1,1) Dim ld As Date = New Date(y,12,31) Dim bh As String = Format(d,"yyyy") Dim max As String Dim idx As Integer Dim flt As String flt = "工程代码 = \'"& e.DataRow("工程代码") & "\' And 制单日期 >= #" & fd & "# And 制单日期 <= #" & ld & "# And [_Identify] <> " & e.DataRow("_Identify") max = e.DataTable.Compute("Max(编号)",flt) MessageBox.Show(max, "提示") If max > "" Then \'如果存在最大编号 idx = CInt(max.Substring(21,4)) + 1 \'获得最大编号的后三位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("编号") ="GDUP-BJSD/YW-" & Format(leibie,"00")&"-" & bh & Format(idx,"0000") |
-- 作者:有点甜 -- 发布时间:2017/10/11 10:25:00 -- e.DataRow("日期")=Date.Today() e.DataRow("工程代码")= leibie Dim d As Date = e.DataRow("日期") Dim y As Integer = d.Year Dim fd As Date = New Date(y,1,1) Dim ld As Date = New Date(y,12,31) Dim bh As String = Format(d,"yyyy") bh = "GDUP-BJSD/YW-" & Format(leibie,"00")&"-" & bh & Dim max As String Dim idx As Integer Dim flt As String flt = "工程代码 = \'"& e.DataRow("工程代码") & "\' And 制单日期 >= #" & fd & "# And 制单日期 <= #" & ld & "# And [_Identify] <> " & e.DataRow("_Identify") max = e.DataTable.Compute("Max(编号)",flt) If max > "" Then \'如果存在最大编号 idx = CInt(max.Substring(bh.length,4)) + 1 \'获得最大编号的后三位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("编号") = bh & Format(idx,"0000") |
-- 作者:anderson -- 发布时间:2017/10/11 20:07:00 -- 老师,您好 您的这句我没太看懂 Dim bh As String = Format(d,"yyyy") bh = "GDUP-BJSD/YW-" & Format(leibie,"00")&"-" & bh & 这样的话bh还没参与计算就被重新赋值了。 我把第二句的bh重新定义了一个新名称,还是不能正常计数。 请老师再帮忙看一下
|
-- 作者:有点甜 -- 发布时间:2017/10/11 20:45:00 -- 照抄下面的代码,如果有问题,上传具体实例说明。 [此贴子已经被作者于2017/10/11 20:45:10编辑过]
|
-- 作者:anderson -- 发布时间:2017/10/12 21:00:00 -- 老师,您好:
还是不可以实现累加。已上传附件。
希望的方式是通过窗口1选择01或03的服务类别,自动填充到表格中,同时,合同号自动累加。
目前的问题是不能自动累加。(单独拆开程序,如果放到datacolchanged里面就可以执行,但是在adddatarow下面,如果不分成01和03两类,也可以实现累加,但是分了01和03两类就不能累加了)
|
-- 作者:有点甜 -- 发布时间:2017/10/12 22:40:00 -- e.DataRow("日期")=Date.Today() e.DataRow("工程代码")= leibie Dim d As Date = e.DataRow("日期") Dim y As Integer = d.Year Dim fd As Date = New Date(y,1,1) Dim ld As Date = New Date(y,12,31) Dim bh As String = Format(d,"yyyy") bh = "GDUP-BJSD/YW-" & Format(leibie,"00")&"-" & bh Dim max As String Dim idx As Integer Dim flt As String flt = "工程代码 = \'"& e.DataRow("工程代码") & "\' And 日期 >= #" & fd & "# And 日期 <= #" & ld & "# And [_Identify] <> " & e.DataRow("_Identify") max = e.DataTable.Compute("Max(编号)",flt) If max > "" Then \'如果存在最大编号 idx = CInt(max.Substring(bh.length,4)) + 1 \'获得最大编号的后三位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("编号") = bh & Format(idx,"0000") \'-------------------------------------记录增加操作人的名称 e.DataRow("负责人") =user.name |
-- 作者:anderson -- 发布时间:2017/10/18 18:17:00 -- 真的太感谢您了!收小子一拜 |