以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如何实现同一批选择的生成编号相同,下一批选择的生成编号往下编  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=98899)

--  作者:twef
--  发布时间:2017/4/8 23:13:00
--  [求助]如何实现同一批选择的生成编号相同,下一批选择的生成编号往下编

如何实现同一批选择的生成编号相同,下一批选择的生成编号往下编?如图


此主题相关图片如下:1.jpg
按此在新窗口浏览图片

此主题相关图片如下:2.jpg
按此在新窗口浏览图片


--  作者:有点色
--  发布时间:2017/4/9 10:33:00
--  

DataRowAdded事件

 

Dim d As Date = Date.Today
Dim bh As String = Format(d,"yyyy") \'生成支付编号的前6位,4位年,2位月.

Dim max As String
Dim idx As Integer
max = e.DataTable.Compute("Max(支付编号)","支付编号 like \'" & bh & "%\' and 是否支付 = true") \'取得该月的最大支付编号
If max > "" Then \'如果存在最大支付编号
    idx = CInt(max.Substring(bh.length)) + 1 \'获得最大支付编号的后三位顺序号,并加1
Else
    idx = 1 \'否则顺序号等于1
End If
e.DataRow("支付编号") = bh & Format(idx,"000")


--  作者:twef
--  发布时间:2017/4/9 13:10:00
--  
有点色老师,我可能没说清楚,表里面的数据已经有了,当同批次选中要支付的多行时,生成编号相同,下一批次选择时编号往下编,有可能同一天分好几批次进行选择(因为属于不同的合同或者客户)
--  作者:有点色
--  发布时间:2017/4/9 22:19:00
--  

 做个按钮【生成下一个编号】,然后再勾选,勾选的行填充生成的编号

 

Dim d As Date = Date.Today
Dim bh As String = Format(d,"yyyy") \'生成支付编号的前6位,4位年,2位月.

Dim max As String
Dim idx As Integer
max = DataTables("表C").Compute("Max(支付编号)","支付编号 like \'" & bh & "%\'") \'取得该月的最大支付编号
If max > "" Then \'如果存在最大支付编号
    idx = CInt(max.Substring(bh.length)) + 1 \'获得最大支付编号的后三位顺序号,并加1
Else
    idx = 1 \'否则顺序号等于1
End If
vars("支付编号") = bh & Format(idx,"000")

msgbox(vars("支付编号"))

 

 


--  作者:twef
--  发布时间:2017/4/10 9:14:00
--  
有点色老师,先勾选,再生成编号填充这样可以实现吗
--  作者:有点色
--  发布时间:2017/4/10 9:15:00
--  
以下是引用twef在2017/4/10 9:14:00的发言:
有点色老师,先勾选,再生成编号填充这样可以实现吗

 

也可以,生成编号的代码看4楼。

 

你把勾选了的,编号为空白的,填充为生成的支付编号,即可。


--  作者:twef
--  发布时间:2017/4/10 9:39:00
--  
有点色老师,如果按年月生成流水号,代码该怎么改呀
--  作者:有点色
--  发布时间:2017/4/10 9:43:00
--  

Dim d As Date = Date.Today
Dim bh As String = Format(d,"yyyyMM") \'生成支付编号的前6位,4位年,2位月.

Dim max As String
Dim idx As Integer
max = DataTables("表C").Compute("Max(支付编号)","支付编号 like \'" & bh & "%\'") \'取得该月的最大支付编号
If max > "" Then \'如果存在最大支付编号
    idx = CInt(max.Substring(bh.length)) + 1 \'获得最大支付编号的后三位顺序号,并加1
Else
    idx = 1 \'否则顺序号等于1
End If
vars("支付编号") = bh & Format(idx,"000")

msgbox(vars("支付编号"))