Foxtable(狐表)用户栏目专家坐堂 → [求助] 关于再增加行之后不能自动生成代码的问题


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

主题:[求助] 关于再增加行之后不能自动生成代码的问题

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


加好友 发短信
等级:婴狐 帖子:4 积分:91 威望:0 精华:0 注册:2017/9/30 12:57:00
[求助] 关于再增加行之后不能自动生成代码的问题  发帖心情 Post By: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")

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


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


加好友 发短信
等级:婴狐 帖子:4 积分:91 威望:0 精华:0 注册:2017/9/30 12:57:00
  发帖心情 Post By:2017/10/11 20:07:00 [只看该作者]

老师,您好
您的这句我没太看懂

Dim bh As String = Format(d,"yyyy")
bh = "GDUP-BJSD/YW-" & Format(leibie,"00")&"-" & bh &

这样的话bh还没参与计算就被重新赋值了。
我把第二句的bh重新定义了一个新名称,还是不能正常计数。
请老师再帮忙看一下

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


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


加好友 发短信
等级:婴狐 帖子:4 积分:91 威望:0 精华:0 注册:2017/9/30 12:57:00
  发帖心情 Post By:2017/10/12 21:00:00 [只看该作者]

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


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


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


加好友 发短信
等级:婴狐 帖子:4 积分:91 威望:0 精华:0 注册:2017/9/30 12:57:00
  发帖心情 Post By:2017/10/18 18:17:00 [只看该作者]

真的太感谢您了!收小子一拜

 回到顶部