以文本方式查看主题

-  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
--  

照抄下面的代码,如果有问题,上传具体实例说明。

 
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")

[此贴子已经被作者于2017/10/11 20:45:10编辑过]

--  作者:anderson
--  发布时间:2017/10/12 21:00:00
--  
老师,您好:
还是不可以实现累加。已上传附件。
希望的方式是通过窗口1选择01或03的服务类别,自动填充到表格中,同时,合同号自动累加。
目前的问题是不能自动累加。(单独拆开程序,如果放到datacolchanged里面就可以执行,但是在adddatarow下面,如果不分成01和03两类,也可以实现累加,但是分了01和03两类就不能累加了)
老师,您费心了。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1_201710122055.zip


--  作者:有点甜
--  发布时间: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
--  
真的太感谢您了!收小子一拜